Étant donné un descripteur de fichier arbitraire, puis-je le bloquer s'il n'est pas bloquant? Si c'est le cas, comment?En c, comment bloquer un descripteur de fichier?
9
A
Répondre
11
Son été un moment que je jouais avec C, mais vous pouvez utiliser la fonction fcntl() pour changer les drapeaux d'un descripteur de fichier:
#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
J'attendre tout simplement pas mettre le drapeau O_NONBLOCK
devrait revenir la le descripteur de fichier au mode par défaut, qui bloque:
/* 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;
}
Questions connexes
- 1. WaitForSingleObject sur un descripteur de fichier?
- 2. Comment obtenir le descripteur de fichier du tampon en mémoire?
- 3. Passer un descripteur de fichier ouvert en C à un interpréteur tcl pour l'utiliser
- 4. Comment écrire un caractère newline natif dans un descripteur de fichier en Python?
- 5. Comment ouvrir un fichier dans Windows sans bloquer son renommage
- 6. Comment bloquer un site programatically utilisant DotNet
- 7. Comment empêcher CFEXECUTE de se bloquer après un PrintStackTrace?
- 8. Comment restaurer un fichier en utilisant C#?
- 9. Comment copier un fichier en C#
- 10. Comment shell exécuter un fichier en C#?
- 11. Comment tronquer un fichier en C?
- 12. Comment bloquer les spams de référence en utilisant Nginx?
- 13. Comment obtenir un flux FILE * à partir d'un descripteur de fichier?
- 14. Descripteur de processus Windows
- 15. Simulation du descripteur de fichier dans l'espace utilisateur
- 16. Que fait select (2) si vous fermez (2) un descripteur de fichier dans un thread séparé?
- 17. Comment compiler un fichier C# en dehors de App_Code?
- 18. comment télécharger un fichier en C# en utilisant webclient?
- 19. Problème de conversion de descripteur
- 20. Est-il possible de déterminer l'état d'un descripteur de fichier en PHP?
- 21. Comment créer un fichier std :: ofstream dans un fichier temporaire?
- 22. Comment interroger de manière asynchrone un fichier à l'aide d'une minuterie flash sans bloquer l'interface utilisateur?
- 23. fonction pour obtenir le descripteur de fichier terminal du processus en cours UNIX
- 24. Howto Passe descripteur de fichier à une fonction pour la sortie en streaming
- 25. Comment puis-je déterminer si un descripteur de fichier Perl est un handle de lecture ou d'écriture?
- 26. Comment puis-je bloquer l'entrée du clavier et de la souris en C#?
- 27. Obtention d'un chemin d'accès de fichier à partir d'un descripteur de fichier dans Windows
- 28. Actionscript 3 et MXML ... bloquer en attendant un événement
- 29. transfert de fichier jpg en utilisant un socket_stream en C
- 30. Comment créer un fichier Excel avec des feuilles en C#?
Oui, c'est la méthode acceptée. Bonne réponse et bonne approche pour faire le fcntl avec le ~ O_NONBLOCK. :) – BobbyShaftoe