Chinaunix

标题: 双向文件描述符怎么不能一边写一边读 [打印本页]

作者: weikle    时间: 2014-08-13 16:23
标题: 双向文件描述符怎么不能一边写一边读
#!/bin/bash
exec 3<>p1.txt
echo "i am writing..." >&3
cat <&3
exec 3>&-
exec 3<&-

没法显示出“i am writing"。奇怪,单独读和写都没问题。
作者: q1208c    时间: 2014-08-13 17:28
自爆自菊么?

如果真可以, 那么, 输入就是输出, 输出就是输入, 从面, 输入会有大量的数据不断的进来, 最终自己把自己累shi为止.
作者: seesea2517    时间: 2014-08-14 09:41
缓冲的原因吗?这个没注意过。
作者: bikong0411    时间: 2014-08-14 09:47
我觉得这就类似文件指针,你写完之后,指针处于最后,再读就EOF了
作者: seesea2517    时间: 2014-08-14 13:12
回复 4# bikong0411


    听着有道理啊~
作者: weikle    时间: 2014-08-14 22:38
本帖最后由 weikle 于 2014-08-14 22:39 编辑
bikong0411 发表于 2014-08-14 09:47
我觉得这就类似文件指针,你写完之后,指针处于最后,再读就EOF了

嗯,这个解释有道理。突然想起了java里面的stream,貌似也不能一边读一边写,否则就不会有input和output两种stream了。
搞个管道文件的fd,可以一边读一边写,但比较讨厌的是read -u读不到东西就阻塞了,不知道怎么捕捉这个阻塞,如果能捕捉到,那就很灵活了,可以利用这个机制干很多事情。
作者: bikong0411    时间: 2014-08-15 09:43
回复 6# weikle


    高级语言以rw方式打开,写完之后你seek到0,再读就可以了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2