[risolto]Programma che si autoriconosce

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
ottaviane
Prode Principiante
Messaggi: 106
Iscrizione: mercoledì 16 febbraio 2011, 20:07
Desktop: Ubuntu
Distribuzione: Ubuntu 22.04 LTS
Località: augusta

[risolto]Programma che si autoriconosce

Messaggio da ottaviane »

Salve a tutti,
vorrei fare un programma in C che si avvia la prima volta e dalla seconda volta in poi invia i propri argomenti al primo e si auto chiude.
ehm forse è complicato da spiegare quindi faccio un esempio:

avvio il programma PROG -a ciao
-- il programma si avvia e crea un file in /var/run/miopid.pid contenente il pid del programma appena avviato e elabora l'argomento "-a ciao" e resta in esecuzione attendendo argomenti con la funzione fgets.
fin qui nessun problema.

avvio nuovamente PROG -c riciao
-- il programma rileva che esiste il file /var/run/miopid.pid . Anche qui nessun problema. La domanda a questo punto è: come faccio a inviare gli argomenti "-c riciao" al pid precedente in modo che fgets li rilevi? così poi la seconda istanza del programma può chiudersi?.

Grazie e saluti.
Ultima modifica di ottaviane il sabato 22 ottobre 2016, 20:06, modificato 1 volta in totale.
Avatar utente
eaghezzi
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 725
Iscrizione: martedì 21 luglio 2009, 10:27
Desktop: Lubuntu
Distribuzione: Ubuntu 14.04.1 LTS i686
Sesso: Maschile
Località: Valleambrosia

Re: Programma che si autoriconosce

Messaggio da eaghezzi »

propongo due soluzioni
1 usi un terzo file magari con nome il pid e dentro scrivi gli agomenti dall'alto processo li leggi

2, usi i socket apri un socket in lettura al primo processo il secondo processo chiede via socket del primo processo gli argomenti

hth.
ottaviane
Prode Principiante
Messaggi: 106
Iscrizione: mercoledì 16 febbraio 2011, 20:07
Desktop: Ubuntu
Distribuzione: Ubuntu 22.04 LTS
Località: augusta

Re: Programma che si autoriconosce

Messaggio da ottaviane »

esatto. grazie eaghezzi. nel frattempo googlando ho trovato che la migliore soluzione è quella di utilizzare un dominio con UNIX SOCKET
A more advanced method is to create and bind a unix domain socket using a predefined socket name. Bind succeeds for the first instance of your application. Again, the OS unbinds the socket when the application terminates for any reason. When bind() fails another instance of the application can connect() and use this socket to pass its command line arguments to the first instance.
Ci lavoro e studio un altro po', poi vi farò sapere.
Nel frattempo sono graditi altri preziosi consigli.
ciao e grazie. :ciao:
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 11 ospiti