当前位置: 技术问答>linux和unix
重定向问题急救
来源: 互联网 发布时间:2015-09-15
本文导语: 我的一个通讯程序,直接运行.在界面上面可以打印消息. 可是重定向到一个文件.就没有打印到那个文件里面去了. 例如: -------------------直接运行-------------------- >monitor & //运行 >wa...
我的一个通讯程序,直接运行.在界面上面可以打印消息.
可是重定向到一个文件.就没有打印到那个文件里面去了.
例如:
-------------------直接运行--------------------
>monitor & //运行
>waiting command.....................//打印的消息
>accept "dat"........................//打印的消息
...
-------------------重定向运行------------------
>monitor >monitor_record & //运行
那个monitor_record文件始终是空的.界面也没有输出
(我用别的重定向没有问题:"echo llllllll >monitor_record")
可是重定向到一个文件.就没有打印到那个文件里面去了.
例如:
-------------------直接运行--------------------
>monitor & //运行
>waiting command.....................//打印的消息
>accept "dat"........................//打印的消息
...
-------------------重定向运行------------------
>monitor >monitor_record & //运行
那个monitor_record文件始终是空的.界面也没有输出
(我用别的重定向没有问题:"echo llllllll >monitor_record")
|
先看看那个monitor产生了输出没有,另外还要看一下本来的输出是不是产生在stdout的,stderr也可以在控制台产生输出,但是此时重定向输出没有办法捕捉到这个stderr上的输出……
|
你确认是打的标准输出 可能是标准出错呢
|
你的程序一定在不停的循环吧,不会退出的。我以前也碰到这个问题,如果你的程序不是正常退出,就不会重定向到文件。只能在程序中写文件。
|
在你循环后面加一句:fflush(stdout);
|
源代码.
#include
#include
int main()
{
while(1)
{
printf("waiting ...n");
fflush(stdout);
sleep(2);
}
编译: gcc -o print print.c
运行: ./print >a.log
#include
#include
int main()
{
while(1)
{
printf("waiting ...n");
fflush(stdout);
sleep(2);
}
编译: gcc -o print print.c
运行: ./print >a.log
|
上面的源代码少了一个 }
不好意思:)
不好意思:)