先指定O_NONBLOCK以非阻塞的方式打开一个fifo, 然后使用fcntl清除它的O_NONBLOCK标志, 这样好象没有生效,再使用read时仍然是非阻塞的。 请哪位大哥指点一下,是不是fifo不支持fcntl的操作呢?
如果不用O_NONBLOCK的话,会不会一直阻塞在哪儿,那随后的判断是啥意思,阻塞了还能执行后面的语句吗〉 int writefd = open( pProCom->m_pSndPara->tempPipeName, O_WRONLY, 0 ); if( writefd == -1 ) { printf("open for write error"); }
在我测试的linux机器上,fifo的容量是64K。建了一个fifo(mkfifo,非阻塞方式)之后,write很多次直至满。此时去读一次fifo,理论上,读了一条记录出来,就会空出至少一条记录的空间,这时候我再尝试write的话,应该成功。 实际情况却不是这样的:假如在此前write的时候,每次比如写入500字节的记录;当读取了一次之后,再尝试写入依然失败。于是在一个loop中,再读一条,再尝试写一次,如此连续8次,第9次才能够写入成功。此前已经...
我在freebsd7上
$mkfifo f1
$echo "KK">f1
然后shell阻塞到了这里,开另一个console,输入
$read t
服务端:[code]#include
本帖最后由 smalltom30 于 2012-12-12 14:41 编辑 1.用mkfifo生成fifo1文件 2.代码运行到open时,就挂住了,该怎么改呢?
本帖最后由 1ming0 于 2011-09-27 08:38 编辑
[code]
#include
非阻塞读fifo的程序: read_fifo.c
[code]
#include
在FB8上執行創建fifo管道文件時 出現以下錯誤,google了一把,也沒有結果,高手給解答一下![code][root@fse /home/workstation/programer/cprgm]# ./a.out cannot create fifoserver Preparing for reading bytes.... open: No such file or directory[/code]