J'ai un descripteur de fichier ouvert à la lecture qui peut être non-bloquant. Ce que je dois faire est simplement de lire toutes les données jusqu'à atteindre EOF et écrire ces données dans un descripteur de fichier accessible en écriture. Comme le processus qui effectue cette copie n'est pas "conscient" de tout ce qui se passe autour, je ne pense pas que je puisse faire quelque chose d'utile en attendant des données, et je ne veux pas utiliser une boucle while
(alors que errno
n'est pas EAGAIN
) parce que je pense que ce serait un gaspillage. Existe-t-il un moyen de bloquer ou de suspendre l'exécution du processus de copie jusqu'à ce que les données soient disponibles?Force le blocage lu après EAGAIN?
0
A
Répondre
3
Votre autre réponse simplement O_NONBLOCK
met à l'arrêt, qui définit le fichier à bloquer. C'est parfaitement bien, si cela fonctionne dans votre situation; mais sinon, vous pouvez utiliser select()
pour bloquer jusqu'à ce que votre descripteur de fichier non bloquant soit lisible.
2
Chapitre 7 du générique HOWTO SCSI Linux (sg) donne an example de la façon de le faire:
int flags = fcntl(fd, F_GETFL);
fcntl(fd, F_SETFL, flags & (~O_NONBLOCK));
Questions connexes
- 1. Erreur EAGAIN pour accepter sur le socket de blocage
- 2. select() sur un tuyau en mode de blocage renvoie EAGAIN
- 3. pas lu le blocage sur le tube nommé
- 4. Renvoi de la socket EAGAIN
- 5. Que signifie EAGAIN?
- 6. pySerial gel après avoir lu 3 fois
- 7. Android forçant le redémarrage complet après le blocage d'une application
- 8. après avoir lu simplement Rails 2
- 9. CodeIgniter: variable après ne pas être lu
- 10. ForceControl Force Build après construction échoue
- 11. Impossible de supprimer un fichier après l'avoir lu
- 12. UIActivityView et le blocage
- 13. Qu'est-ce qui après avoir lu Plongez dans Python?
- 14. lu à partir du fichier après avoir appelé lseek64 - Linux
- 15. Comment devrais-je imprimer un caractère particulier dans le fichier après avoir lu le fichier?
- 16. Fichier verrouillé par les services (après que le code de service a lu le fichier texte)
- 17. comment résoudre le problème de blocage?
- 18. Qu'est-ce qui provoquerait le blocage de cette migration?
- 19. blocage de la connexion après X tentatives infructueuses
- 20. ncurses et le blocage stdin
- 21. Comment empêcher le blocage de l'interface graphique?
- 22. Puis-je effacer le port série à chaque fois après avoir lu les données?
- 23. Force la régénération du fichier Settings.settings après modification dans app.config
- 24. force supprimer ligne sur l'application django après la migration
- 25. ASP.NET TransmitFile provoque le blocage du site
- 26. Quand le fichier web.config est-il lu?
- 27. InternetSetOption blocage?
- 28. Empêcher le blocage des threads dans Tomcat
- 29. IMAP dans Php: marquage d'un message non lu/non lu
- 30. Non-blocage Socket Polling vs Blocage socket