select() et FIFO

select() et FIFO - C - Programmation

Marsh Posté le 16-06-2007 à 17:39:20    

Salut !
 
Une ptite question rapide :
la fonction select permet de voir si des descripteurs sont disponibles immédiatement en écriture (entre autres bien sur)
Dans le cas d'un FIFO, ça donne quoi? Il faut qu'un autre process soit en read sur le FIFO ou juste que le FIFO soit ouvert en écriture ?
 
merci :hello:


---------------
iteme.free.fr | Mon feedback
Reply

Marsh Posté le 16-06-2007 à 17:39:20   

Reply

Marsh Posté le 16-06-2007 à 21:30:37    

ITM a écrit :

Salut !
 
Une ptite question rapide :
la fonction select permet de voir si des descripteurs sont disponibles immédiatement en écriture (entre autres bien sur)
Dans le cas d'un FIFO, ça donne quoi? Il faut qu'un autre process soit en read sur le FIFO ou juste que le FIFO soit ouvert en écriture ?
 
merci :hello:


Bonne question Calaghan !!!
 
A mon avis, si ton processus a ouvert ton fifo en mode "w", alors ton select lancé depuis le processus verra le fifo disponible pour l'écriture.
Maintenant, si tu écrits dedans (via un fwrite par exemple), alors ta fonction d'écriture sera bloquée jusqu'à ce qu'un autre processus vienne lire le fifo...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 17-06-2007 à 00:00:40    

Sve@r a écrit :

Bonne question Calaghan !!!
 
A mon avis, si ton processus a ouvert ton fifo en mode "w", alors ton select lancé depuis le processus verra le fifo disponible pour l'écriture.
Maintenant, si tu écrits dedans (via un fwrite par exemple), alors ta fonction d'écriture sera bloquée jusqu'à ce qu'un autre processus vienne lire le fifo...


 
Bein je pense comme toi aussi, mais j'aimerais en être sur..
 
Pour le dernier point y'a pas de soucis, c'est justement ce que je veux éviter. Ecrire en mode non bloquant, concrètement ça change quoi si l'autre en face ne lit pas? Le paquet est perdu ou pas?
 


---------------
iteme.free.fr | Mon feedback
Reply

Marsh Posté le 17-06-2007 à 12:09:28    

ITM a écrit :

Bein je pense comme toi aussi, mais j'aimerais en être sur..


Faut tester
 

ITM a écrit :

c'est justement ce que je veux éviter. Ecrire en mode non bloquant, concrètement ça change quoi si l'autre en face ne lit pas? Le paquet est perdu ou pas?


Si tu écrits en mode non bloquant et que ça ne peut pas se faire, ta fonction d'écriture te renvoie une erreur (NULL ou -1 selon la fonction) et errno est positionné à EAGAIN.
Etant donné que ça ne s'est pas fait, ce que t'as écrit est perdu.


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 28-06-2007 à 14:28:01    

A mon avis, c'est le kernel qui gère.
Quelque soit le type de tunnel, les données écrites sont comme 'entassé' juste avant la sortie du tunnel, et celui au bout peut lire quand lit veut ou alors on lui indique qu'il y a qqchose à lire.
Donc, un FIFO, c'est comme le reste, on balance tant que le FIFO est connecté, mais pas obligé que l'autre en face soit en lecture.


Message édité par nORKy le 28-06-2007 à 14:30:31
Reply

Marsh Posté le 28-06-2007 à 15:33:51    

J'aurais dit qu'on peut écrire dans un fifo même si l'autre ne lit pas... Ce que tu écris est bufferisé par le kernel.
 
Edit : ah oui c'est ce que tu viens de dire en fait.


Message édité par matafan le 28-06-2007 à 15:34:28
Reply

Marsh Posté le 28-06-2007 à 16:32:08    

select pue. utilise au moins poll

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed