写入/ dev / stdout的程序:如何发送EOF?

时间:2017-07-01 15:25:49

标签: c++ file unix stdout

我有一个将数据写入文件的程序。通常,文件在磁盘上,但我正在尝试写入/dev/stdout。目前,当我这样做时,程序将不会退出,直到我按Ctrl-C。有没有办法让程序发出输出信号的信号?

编辑:

目前,磁盘文件是通过fopen(FILE_NAME)打开的,因此我现在尝试将/dev/stdout作为FILE_NAME传递。

编辑2:

命令行是

MY_PROGRAM -i foo -o /dev/stdout > dump.png

编辑3:

这里的问题似乎是stdout已经打开,我第二次打开它。

1 个答案:

答案 0 :(得分:2)

当没有文件句柄仍然可以写入时,FIFO上的EOF条件(如果你从程序中输入其他东西,就是你的stdout )就会被设置

在C中,标准库为fclose(stdout),而系统调用界面为close(1) - 如果您正在使用fopen(),则您需要配对它与fclose()

如果您还要单独执行outFile = fopen("/dev/stdout", "w")或类似操作,那么您也需要关闭该副本:fclose(outFile)以及fclose(stdout)。< / p>