- 论坛徽章:
- 84
|
10可用积分
本帖最后由 yjh777 于 2010-11-19 23:19 编辑
./prog 是一个服务进程,启动阶段会打印一些初始化提示信息到标准输出
./prog >logfile & 执行后,logfile里并没有那些提示信息;
现在怀疑重定向到文件后,io变成了全缓冲 导致的;
可是怎么解决这个问题呢?可不可以通过shell方法把这些标准输出信息重定向到logfile啊?(别组做的,没有源码)
写了测试程序,在C里面打到stderr,然后 ./test 2>logfile & 是可以的
可是试了如下方法却不好用:
./prog 2>logfile 1>&2 &
发现原因如下: <<(2010-05-26)
|
USER SPACE | KERNEL SPACE
|
+--------------+ | +-----------------+
| FILE *stdout | | +------------+ close----->| fileobj1 urtty |
+--------------+ | |fd 0 + +-----------------+
`--------#-->|fd 1 +-----# +-----------------+
/--------#-->|fd 2 +------\-# close----->| fileobj2 urtty |
+--------------+ | . . \ \ +-----------------+
| FILE *stderr | | . . \ \ +------------------+
+--------------+ | |fd x +---------#-#-->| fileobjx newfile |
| +------------------+
|
|
(2010-05-26)
各位大侠帮看看,这个问题怎么解决,
shell里可以修改标准输出的缓存策略吗? |
最佳答案
查看完整内容
unbuffer ./prog >logfile &
|