我用 C 编写了一个程序,该程序使用 printf 将消息发送到标准输出,但我无法将输出重定向到文件(从 bash 运行)。
我试过了:
./program argument >> program.out
./program argument > program.out
./program >> program.out argument
./program > program.out argument
在每种情况下,都会创建文件 program.out,但它仍然为空。执行结束后文件大小为0。
如果我在执行程序时省略了重定向:
./program argument
然后,使用 printf 发送到标准输出的所有消息都显示在终端中。
我有其他 C 程序,以这种方式重定向输出没有问题。跟程序本身有关系吗?随着论点通过?应该从哪里寻找问题?
C程序的一些细节:
- 它不从标准输入读取任何内容
- 它使用 BSD Internet 域套接字
- 它使用 POSIX 线程
- 它使用 sigaction 为 SIGINT 信号分配一个特殊的处理函数
- 它向标准输出发送大量换行符(对于那些认为我应该刷新的人)
一些代码:
int main(int argc, char** argv)
{
printf("Execution started\n");
do
{
/* lots of printf here */
} while (1);
/* Code never reached */
pthread_exit(EXIT_SUCCESS);
}