Ich habe ein paar Antworten gefunden, aber sie scheinen sich speziell auf Windows-Maschinen zu beziehen. Also meine Frage ist, was sind die Unterschiede zwischen Rohren und Steckdosen, und wenn/wie sollten Sie eines über das andere wählen?Was ist der Unterschied zwischen Rohren und Steckdosen?
Antwort
Was sind die Unterschiede zwischen Rohren und Steckdosen, und wann/wie sollten Sie sich für eines entscheiden?
Rohrleitungen und Steckdosen verarbeiten Bytestreams, aber sie tun es auf unterschiedliche Weise ...
- Rohre existieren nur innerhalb eines bestimmten Host, und sie beziehen sich auf Pufferung zwischen virtuellen Dateien oder die Verbindungs Ausgabe/Eingabe von Prozessen innerhalb dieses Hosts. Es gibt keine Konzepte von Paketen in Pipes.
- Sockets paketieren die Kommunikation mit IPv4 oder IPv6; Diese Kommunikation kann sich über localhost hinaus erstrecken. Beachten Sie, dass verschiedene Endpunkte eines Sockets dieselbe IP-Adresse verwenden können. Sie müssen jedoch unterschiedliche TCP/UDP-Ports abhören.
Nutzungs:
- Verwendung Rohren:
- , wenn Sie wollen als Datei in einem bestimmten Server/Schreib-Daten zu lesen. Wenn Sie C verwenden, können Sie
read()
undwrite()
an eine Pipe. - wenn Sie die Ausgabe eines Prozesses mit dem Eingang eines anderen Prozesses verbinden möchten ... siehe popen()
- , wenn Sie wollen als Datei in einem bestimmten Server/Schreib-Daten zu lesen. Wenn Sie C verwenden, können Sie
- Verwenden Buchsen Daten zwischen verschiedenen IPv4/IPv6-Endpunkten zu senden. Sehr oft geschieht dies zwischen verschiedenen Hosts, aber Steckdosen innerhalb der gleichen Host
BTW verwendet werden könnten, Sie netcat oder socat zu verbinden, um eine Buchse an ein Rohr verwenden können.
Um die Antwort von Mike zu vervollständigen, ist es wichtig, die Existenz von UNIX Domain Sockets zu erwähnen, die auf jedem POSIX-kompatiblen Betriebssystem verfügbar sind. Obwohl sie in Bezug auf die Verwendungssemantik den "normalen" Internet-Sockets sehr ähnlich sind, sind sie rein lokal für die Maschine (natürlich können Internet-Sockets auch lokal arbeiten) und verhalten sich daher fast wie eine Pipe. Fast, weil ein UNIX-Pipe definitions unidirektional:
Rohre und FIFOs (auch als named pipes bekannt) einen unidirektionale Interprozesskommunikationskanal. Ein Rohr hat ein Leseende und ein Schreiben Ende. Daten, die auf das Schreibende einer Pipe geschrieben werden, können aus dem gelesenen Ende der Pipe gelesen werden. (Auszug aus dem man page pipe(7))
UNIX Domain Sockets auch eine sehr ungewöhnliche Eigenschaft haben, da neben Daten, sie erlauben auch Filedeskriptoren Senden: Mit dieser Art und Weise, ein unprivilegierten Prozess eine beliebige Datei zugreifen können, deren Descriptor gesendet wurde über den Sockel. Diese Technik wird laut Wikipedia vom ClamAV Antivirus Scanning Daemon verwendet.
- 1. Was ist der Unterschied zwischen `==` und `ist`?
- 2. Was ist der Unterschied zwischen:.! und: r !?
- 3. Was ist der Unterschied zwischen Difftime und '-'?
- 4. Was ist der Unterschied zwischen $ und $$?
- 5. Was ist der Unterschied zwischen Verilog! und ~?
- 6. was ist der Unterschied zwischen [[], []] und [[]] * 2
- 7. Was ist der Unterschied zwischen/* ... */und/** ... */
- 8. Was ist der Unterschied zwischen `&` und `ref`?
- 9. Was ist der Unterschied zwischen $ (...) und `...`
- 10. Was ist der Unterschied zwischen .Equals und ==
- 11. Was ist der Unterschied zwischen "$^N" und "$ +"?
- 12. Was ist der Unterschied zwischen + = und = +?
- 13. Was ist der Unterschied zwischen? und ? = Nil
- 14. Was ist der Unterschied zwischen $ (()) und Ausdruck?
- 15. Was ist der Unterschied zwischen:
- 16. Was ist der Unterschied zwischen der JSP und der JSTL?
- 17. Steckdosen zwischen Computern
- 18. Was ist der Unterschied zwischen NetFx45WebLink und NetFx45RedistLink ist
- 19. Was ist der Unterschied zwischen PS1 und PROMPT_COMMAND ist
- 20. Was ist der Unterschied zwischen x86 und x64 ist
- 21. Was ist der Unterschied zwischen „ist None“ und „== None“
- 22. Was ist der Unterschied zwischen DISPATCH_QUEUE_CONCURRENT und DISPATCH_QUEUE_SERIAL ist
- 23. Was ist der Unterschied zwischen Task.Run ist() und Task.Factory.StartNew()
- 24. Was ist der Unterschied zwischen RewriteRule ist und umleiten 301
- 25. Was ist der Unterschied zwischen ist - (void) und + (void) Methoden
- 26. Was ist der Unterschied zwischen ist HttpResponseMessage und HttpResponseException
- 27. Was ist der Unterschied zwischen nohup und kaufmännisches Und
- 28. Was ist der Unterschied zwischen: und :: und ::: in Javascript Grammatik
- 29. Was ist der Unterschied zwischen Microsoft.AspNet.WebApi.OData und Microsoft.Data.OData und Microsoft.AspNet.OData?
- 30. Was ist der Unterschied zwischen Chisel und Lava und CLaSH?