Pipe non bloquante utilisant de la popen?
Je voudrais ouvrir une conduite à l'aide popen()
et non-bloquant "lire" accès.
Comment puis-je y parvenir?
(Les exemples que j'ai trouvés étaient tous de blocage/synchrone)
source d'informationauteur jldupont | 2009-11-14
Vous devez vous connecter pour publier un commentaire.
De configuration comme ceci:
Maintenant, vous pouvez lire:
Lorsque vous avez terminé, nettoyage:
popen()
appelle en internepipe()
fork()
dup2()
(au point le processus de l'enfant de la fds 0/1/2 pour les tuyaux) etexecve()
. Avez-vous considéré l'utilisation de ces à la place? Dans ce cas, vous pouvez définir le tuyau de vous lire pour les non-bloquant à l'aide defcntl()
.mise à jour: Voici un exemple, juste pour illustrer:
Jamais essayé, mais je ne vois pas pourquoi vous ne pourriez pas vous les descripteurs de fichiers avec fileno(), utilisez la fonction fcntl() pour définir le non-blocage, et d'utiliser read()/write(). Vaut la peine d'essayer.
Avez-vous regardé la section "voir aussi" de la page de man pour popen()?
Rapide recherche sur google a révélé cette page: http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html#blocking Parle de blocage et les non-blocage de l'accès aux descripteurs de fichiers.