Dato un descrittore di file arbitrario, posso bloccarlo se non è bloccante? Se é cosi, come?In c, come si può bloccare un descrittore di file?
9
A
risposta
11
Il suo stato un po 'che ho giocato con la C, ma è possibile utilizzare la funzione di fcntl() di cambiare le bandiere di un descrittore di file:
#include <unistd.h>
#include <fcntl.h>
// Save the existing flags
saved_flags = fcntl(fd, F_GETFL);
// Set the new flags with O_NONBLOCK masked out
fcntl(fd, F_SETFL, saved_flags & ~O_NONBLOCK);
7
mi aspetterei semplicemente non impostando il flag O_NONBLOCK
dovrebbe ritornare il descrittore di file alla modalità predefinita, che blocca:
/* Makes the given file descriptor non-blocking.
* Returns 1 on success, 0 on failure.
*/
int make_blocking(int fd)
{
int flags;
flags = fcntl(fd, F_GETFL, 0);
if(flags == -1) /* Failed? */
return 0;
/* Clear the blocking flag. */
flags &= ~O_NONBLOCK;
return fcntl(fd, F_SETFL, flags) != -1;
}
Problemi correlati
- 1. Impossibile bloccare il file utilizzando il flock con il descrittore di file
- 2. Come riaprire un descrittore di file chiuso
- 3. descrittore di socket vs descrittore di file
- 4. Come bloccare il file
- 5. Come ottenere un puntatore FILE da un descrittore di file?
- 6. Come ottenere un flusso FILE * da un descrittore di file?
- 7. In Java, come si ottiene un socket o DatagramSocket dal descrittore di file di un socket C già aperto?
- 8. Come si può Marshal un array di byte in C#?
- 9. fopen crea un descrittore di file?
- 10. Quante informazioni sono effettivamente memorizzate in un descrittore di file?
- 11. descrittore di file inappropriato quando si utilizza PySide
- 12. Come un'applicazione può bloccare Android OS
- 13. ftell su un descrittore di file?
- 14. Bad descrittore di file in Ruby Demoni
- 15. Come si scrive un file di intestazione C che può essere utilizzato nei programmi C++?
- 16. Cosa fa select (2) se si chiude (2) un descrittore di file in un thread separato?
- 17. Come scrivere un carattere di fine riga nativo in un descrittore di file in Python?
- 18. passaggio -1 come descrittore di file in mmap
- 19. Come verificare se un descrittore di file ha dati disponibili?
- 20. Come eseguire un programma dal descrittore di file?
- 21. Esempio di perdita di descrittore di file?
- 22. Descrittore file errato Golang
- 23. Come determinare se un descrittore di file è ricercabile?
- 24. Come si può lanciare un array bidimensionale in C?
- 25. C# per bloccare o non bloccare
- 26. Come si può utilizzare "First Responder" in un file xib?
- 27. Come si può includere un altro file LiveScript in LiveScript?
- 28. Come verificare se un file esiste ancora utilizzando un descrittore di file
- 29. Devo bloccare o contrassegnare come volatile quando si accede a un semplice flag booleano in C#?
- 30. Riapri un descrittore di file con un altro accesso?
Sì, questo è il metodo accettato. Una buona risposta e un approccio gradevole al fare il fcntl con il ~ O_NONBLOCK. :) – BobbyShaftoe