我想把我的程序的输出放到一个文件中。我键入以下内容:
./prog > log 2>&1
但是文件"log"中没有任何内容。我使用的是 Ubuntu 11.10,默认 shell 是 bash。
任何人都知道这个的原因以及我如何调试它?
我想把我的程序的输出放到一个文件中。我键入以下内容:
./prog > log 2>&1
但是文件"log"中没有任何内容。我使用的是 Ubuntu 11.10,默认 shell 是 bash。
任何人都知道这个的原因以及我如何调试它?
有很多可能的原因:
log
当您尝试使用截断重定向到文件时,程序会从文件中读取输入(请参阅为什么“排序文件 1 > 文件 1”不起作用?)fflush
或输出。std::flush
最好的办法是在调试器(如gdb
)下运行此应用程序或使用strace
或ptrace
(或两者)并查看程序在做什么。我的意思是,真的,输出重定向在过去的 40 年里一直有效,所以问题一定出在其他地方。