我有一个将数据写入文件的程序。通常,文件在磁盘上,但我正在尝试写入/dev/stdout
。目前,当我这样做时,程序将不会退出,直到我按Ctrl-C。有没有办法让程序发出输出信号的信号?
编辑:
目前,磁盘文件是通过fopen(FILE_NAME)
打开的,因此我现在尝试将/dev/stdout
作为FILE_NAME
传递。
编辑2:
命令行是
MY_PROGRAM -i foo -o /dev/stdout > dump.png
编辑3:
这里的问题似乎是stdout
已经打开,我第二次打开它。
答案 0 :(得分:2)
当没有文件句柄仍然可以写入时,FIFO上的EOF条件(如果你从程序中输入其他东西,就是你的stdout )就会被设置
在C中,标准库为fclose(stdout)
,而系统调用界面为close(1)
- 如果您正在使用fopen()
,则您需要配对它与fclose()
。
如果您还要单独执行outFile = fopen("/dev/stdout", "w")
或类似操作,那么您也需要关闭该副本:fclose(outFile)
以及fclose(stdout)
。< / p>