È possibile utilizzare il epoll
(su Linux) per i file normali? So che è principalmente usato con le prese, ma mi chiedo solo.Epoll su file regolari
15
A
risposta
11
Non proprio. epoll
ha senso solo per i descrittori di file che normalmente presentano un comportamento di blocco su lettura/scrittura, come tubi e prese. I descrittori di file normali restituiranno sempre un risultato o una fine del file più o meno immediatamente, quindi epoll
non farebbe nulla di utile per loro.
11
penso, che non riuscirà a epoll_ctl con EPERM:
EPERM The target file fd does not support epoll.
se il file non ha un'interfaccia poll()
.
Il codice attuale è http://lxr.linux.no/#linux+v3.1/fs/eventpoll.c#L1373
1373 /* The target file descriptor must support poll */
1374 error = -EPERM;
1375 if (!tfile->f_op || !tfile->f_op->poll)
1376 goto error_tgt_fput;
1377
Problemi correlati
- 1. Kqueue su file regolari
- 2. prestazioni epoll
- 3. Boost Asio su Linux non utilizza Epoll
- 4. select vs poll vs epoll
- 5. Server UDP multithreading con epoll?
- 6. JDK7 NIO.2 usa Epoll ecc. Su Linux?
- 7. OS X non supporta la funzione epoll?
- 8. Esiste epoll equivalente in Java?
- 9. Perché select.select() funziona con i file su disco ma non con epoll()?
- 10. select(), poll() o epoll()? per l'attributo sysfs
- 11. partita su più righe perl espressioni regolari
- 12. Async connessione e disconnessione con epoll (Linux)
- 13. Epoll e arresto a 1 via remoto
- 14. Traduci espressioni regolari Perl su .NET
- 15. Analisi regolari su serie temporali irregolari
- 16. Perché il supporto epoll nativo viene introdotto in Netty?
- 17. Cosa fa epoll con un descrittore di file che fa riferimento a una directory?
- 18. PowerShell su Windows 7: Set-ExecutionPolicy per utenti regolari
- 19. file su più processi
- 20. Espressioni regolari e assemblaggio
- 21. prove sulle espressioni regolari
- 22. Commentando le espressioni regolari
- 23. Espressioni regolari in OCaml
- 24. Espressioni regolari: nomi di file corrispondenti che iniziano con punto (.)?
- 25. Rinomina file in base a espressioni regolari nel Gulp
- 26. espressioni regolari Javascript per la convalida dei nomi file
- 27. espressioni regolari Fuzzy
- 28. Espressioni regolari nel findstr
- 29. Uso di espressioni regolari con C++ su Unix
- 30. Utilizzo di Jquery per consentire eventi su oggetti JS regolari
Cioè, funziona, anche se inutilmente: "La funzione poll() sostiene i file regolari ... file regolari sono sempre il polling TRUE per la lettura e la scrittura." http://pubs.opengroup.org/onlinepubs/009695399/functions/poll.html La pagina man di epoll (4) dice: "se usato come interfaccia con trigger a livello, epoll è sicuramente un sondaggio più veloce (2), e può essere utilizzato ovunque sia usato quest'ultimo poiché condivide la stessa semantica. " Pertanto, come dice duskwuff, non farà nulla di utile. – mkj
Che è così stupido e sbagliato. Il kernel potrebbe bloccarsi per molte ragioni, dalla rotazione del disco (se si è addormentati), fino al ritardo della rete da una condivisione/unità montata in rete. Qualsiasi tipo di interazione con il dispositivo potrebbe causare un blocco di I/O. selezionare/epoll/poll/kqueue dovrebbe essere fatto per funzionare con qualsiasi descrittore di file e qualsiasi descrizione di file dovrebbe consentire il blocco. – Rahly
@Rahly Questo non è possibile. Il kernel non sa in anticipo se una scrittura in un file verrà bloccata - diversamente da socket o pipe, i buffer per le scritture del filesystem non sono dedicati a un singolo FD, quindi non c'è modo di garantire che siano disponibili per un processo specifico . – duskwuff