Posso usare pipe tra due processi senza utilizzare fork e condividere i descrittori di file con socket ad esempio? Non ho bisogno di un'altra soluzione, ho bisogno di tubi tra due processi che non sono biforcati.Può usare il tubo senza forcella?
risposta
Si potrebbe utilizzare una named pipe (FIFO):
se lo fai mkfifo <common path>
, è un uso questo percorso in entrambi i processi, uno per la lettura e uno per la scrittura. Quindi hai lo stesso comportamento di un tubo normale.
La soluzione più semplice è utilizzare una named pipe, che è una pipe con un nome nel filesystem in modo che entrambi i processi possano farvi riferimento. Una pipe denominata viene creata con la chiamata mkfifo()
e aperta con open()
(un processo dovrebbe aprirlo per la lettura e l'altro per la scrittura).
È possibile utilizzare un tubo di anonimo con due processi indipendenti troppo, ma per farlo è necessario passare in qualche modo una descrizione file è aperto il processo che ha creato il tubo per l'altro processo. È possibile farlo utilizzando un messaggio SCM_RIGHTS
su un socket di dominio UNIX, ma se si dispone di un socket di dominio UNIX, è possibile utilizzarlo per comunicare al posto della pipe. Un metodo specifico per Linux prevede che il secondo processo utilizzi open()
sul collegamento simbolico /proc/<pid>/fd/<fd>
che rappresenta la fine della pipe nel primo processo, ma è piuttosto barocco.
- 1. Devo usare la forcella o i fili?
- 2. ottenere il comportamento di copia su scrittura della forcella() ing, senza forcella()
- 3. Tubo, forcella ed Exec - Comunicazione bidirezionale tra processo padre e figlio
- 4. Implementazione forcella
- 5. tubo
- 6. Redis bgsave fallito perché la forcella non può assegnare memoria
- 7. Qualcuno può spiegare deadlock del buffer del tubo?
- 8. Il mio setter WPF può usare TemplateBinding?
- 9. Come usare Symbol tubo attraverso exec in Java
- 10. gdb - il debugging con tubo
- 11. Forcella multipla() Concorrenza
- 12. Forcella per sovraccarico()
- 13. implementazione della forcella in perl
- 14. funzioni forcella FMAP
- 15. Tubo meno di Emacs
- 16. Bomba a forcella in serie?
- 17. Django + WebKit = Tubo rotto
- 18. Come si può usare type = "url" in MVC4 senza jQuery che convalida il campo come URL?
- 19. Tubo non bloccante che utilizza il popen?
- 20. non può usare .bind() per eseguire il bover hover
- 21. RazorEngine: non può usare Html.Raw
- 22. Forcella WEBrick e attendere inizio
- 23. Tubo tra le prese
- 24. tubo in Golang
- 25. SSL rotto tubo
- 26. java.net.SocketException: tubo rotto
- 27. Nome cambio forcella per Github
- 28. PowerShell tubo v3.0 problema
- 29. Tubo rotto Java EE
- 30. Come forcella all'interno monade trasformatore
@pst Un socket unix è accessibile in modo completamente diverso: 'connect()', 'accept()' ecc. – glglgl