Bonjour,
malgré toutes mes recherches, je n'arrive pas à créer un pipe non blocant,
c'est à dire que quand le consommateur n'a rien à lire, je ne veux pas qu'il
reste bloqué sur le read mais qu'il passe aux instructions suivantes
exemple :
int fd[2];
pipe(fd);
read(fd[0],&buffer,sizeof(char));
printf("c'est pas bloquant ! y a juste rien dans le pipe et buffer est vide
!!");
suis-je obligé de passer par un thread qui regarde mes pipe et met à jour
une variable partagée avec son père quand il lit quelque chose ?
merci de votre aide !
--
Vincent Courcelle
http://www.tubededentifrice.com et http://www.france-jeunes.net
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Olivier Azeau
Vincent Courcelle wrote:
Bonjour, malgré toutes mes recherches, je n'arrive pas à créer un pipe non blocant, c'est à dire que quand le consommateur n'a rien à lire, je ne veux pas qu'il reste bloqué sur le read mais qu'il passe aux instructions suivantes exemple : int fd[2]; pipe(fd); read(fd[0],&buffer,sizeof(char)); printf("c'est pas bloquant ! y a juste rien dans le pipe et buffer est vide !!");
Cette question aurait plus sa place dans un fr.comp.os.* car les comportements des appels systèmes dépendent des plateformes...
Cherche probablement du coté d'un flag O_NONBLOCK à positionner avec fcntl
suis-je obligé de passer par un thread qui regarde mes pipe et met à jour une variable partagée avec son père quand il lit quelque chose ? merci de votre aide !
Non, mais une question à se poser c'est pourquoi aller lire dans un pipe alors que l'on n'est pas sûr d'y trouver quelque chose (typiquement, utilisation de "select")
Vincent Courcelle wrote:
Bonjour,
malgré toutes mes recherches, je n'arrive pas à créer un pipe non blocant,
c'est à dire que quand le consommateur n'a rien à lire, je ne veux pas qu'il
reste bloqué sur le read mais qu'il passe aux instructions suivantes
exemple :
int fd[2];
pipe(fd);
read(fd[0],&buffer,sizeof(char));
printf("c'est pas bloquant ! y a juste rien dans le pipe et buffer est vide
!!");
Cette question aurait plus sa place dans un fr.comp.os.* car les
comportements des appels systèmes dépendent des plateformes...
Cherche probablement du coté d'un flag O_NONBLOCK à positionner avec fcntl
suis-je obligé de passer par un thread qui regarde mes pipe et met à jour
une variable partagée avec son père quand il lit quelque chose ?
merci de votre aide !
Non, mais une question à se poser c'est pourquoi aller lire dans un pipe
alors que l'on n'est pas sûr d'y trouver quelque chose (typiquement,
utilisation de "select")
Bonjour, malgré toutes mes recherches, je n'arrive pas à créer un pipe non blocant, c'est à dire que quand le consommateur n'a rien à lire, je ne veux pas qu'il reste bloqué sur le read mais qu'il passe aux instructions suivantes exemple : int fd[2]; pipe(fd); read(fd[0],&buffer,sizeof(char)); printf("c'est pas bloquant ! y a juste rien dans le pipe et buffer est vide !!");
Cette question aurait plus sa place dans un fr.comp.os.* car les comportements des appels systèmes dépendent des plateformes...
Cherche probablement du coté d'un flag O_NONBLOCK à positionner avec fcntl
suis-je obligé de passer par un thread qui regarde mes pipe et met à jour une variable partagée avec son père quand il lit quelque chose ? merci de votre aide !
Non, mais une question à se poser c'est pourquoi aller lire dans un pipe alors que l'on n'est pas sûr d'y trouver quelque chose (typiquement, utilisation de "select")