Se ci sono più thread che scrivono dati a lunghezza fissa (ad esempio indirizzo a 4 byte) su una singola pipe e vi è un singolo lettore di tale pipe, è garantito che il lettore ottenga i byte in ordine? In altre parole, è write()
in un atomico di pipa?unix pipe più scrittori
7
A
risposta
5
http://pubs.opengroup.org/onlinepubs/009695399/functions/write.html
atomica/non-atomica: Una scrittura è atomico se l'intero importo scritto in una operazione non è intercalati con i dati da qualsiasi altro processo. È utile quando ci sono più scrittori che inviano dati a un singolo lettore. Le applicazioni devono sapere quanto è grande una richiesta di scrittura da eseguire eseguita in modo atomico. Questo massimo è chiamato {PIPE_BUF}. Questo volume di IEEE Std 1003.1-2001 non dice se richieste di scrittura di più di {} PIPE_BUF byte sono atomiche, ma richiede che scrive su {} o PIPE_BUF meno byte devono essere atomica.
Problemi correlati
- 1. pipe Unix in ls
- 2. Più scrittori, un lettore, quale collezione
- 3. pipe UNIX on C block on read
- 4. Sono unix pipe (|) e pipe che creiamo usando "pipe (int pipefd [2])" in c lo stesso?
- 5. Implementazione di pipe in una shell C (Unix)
- 6. node.js-http: ascolta su unix locale pipe/socket
- 7. Distinguere una pipe da un file in Unix
- 8. IPC vs dominio pipe vs named pipe
- 9. Opzioni per il | (pipe) comando
- 10. Unix FIFO in go?
- 11. Perché utilizzare dplyr pipe (%>%) più lento di un'espressione non pipe equivalente?
- 12. Problema forking fork() più processi Unix
- 13. Compilare più file .hs di Haskell - Unix
- 14. unix funzione mappa
- 15. Come evitare l'eco che chiude le pipe denominate FIFO? - Comportamento divertente dei FIFO di Unix
- 16. Esistono lettori CSV/librerie di scrittori in C#?
- 17. modo più elegante per implementare Pipe and Pattern filtro
- 18. Invia dati a più socket utilizzando pipe, tee() e splice()
- 19. pipe file riga per riga in più variabili di lettura
- 20. È possibile colorare l'output in pipe su più?
- 21. Creare una pipe che scrive su più file (tee)
- 22. Come posso avere una pipe con più tipi di comunicazione?
- 23. bash pipe & SIGTERM
- 24. Può popen() creare pipe bidirezionali come pipe() + fork()?
- 25. Java NIO Pipe vs BlockingQueue
- 26. F # pipe first parameter
- 27. Coda pipe vs msg
- 28. pipe denominate Windows e
- 29. createReadStream(). Pipe() Callback
- 30. pipe (|) operatore in Java
Grazie. Ho visto la pagina man http://linux.die.net/man/2/write e non ho visto nulla. – Manish
Si noti che il valore di 'PIPE_BUF' varia in modo significativo tra i sistemi Unix. Vedi qui per una collazione di valori osservati: http://ar.to/notes/posix#pipe-buf –