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.
[risolto]Programma che si autoriconosce
-
- 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
Ultima modifica di ottaviane il sabato 22 ottobre 2016, 20:06, modificato 1 volta in totale.
- eaghezzi
- 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
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.
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.
-
- 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
esatto. grazie eaghezzi. nel frattempo googlando ho trovato che la migliore soluzione è quella di utilizzare un dominio con UNIX SOCKET
Nel frattempo sono graditi altri preziosi consigli.
ciao e grazie.
Ci lavoro e studio un altro po', poi vi farò sapere.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.
Nel frattempo sono graditi altri preziosi consigli.
ciao e grazie.
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 11 ospiti