我有一个将数据写入文件的程序。通常,该文件在磁盘上,但我正在尝试写入/dev/stdout
.目前,当我这样做时,程序不会退出,直到我按 Ctrl-C .有没有办法让程序发出输出完成的信号?
编辑:
目前,磁盘文件是通过fopen(FILE_NAME)
打开的,所以我现在正在尝试将/dev/stdout
作为FILE_NAME
传入。
编辑 2:
命令行是
MY_PROGRAM -i foo -o /dev/stdout > dump.png
编辑3:
看起来这里的问题是stdout
已经打开了,我第二次打开它。
FIFO 上的 EOF 条件(如果您从程序管道到其他内容,这就是您的标准输出(是在没有文件句柄仍打开写入时设置的。
在 C 语言中,标准库是fclose(stdout)
的,而 syscall 接口是close(1)
的——如果你使用的是fopen()
,你会希望它与fclose()
配对。
如果您还在执行单独的outFile = fopen("/dev/stdout", "w")
或类似操作,则还需要关闭该副本:fclose(outFile)
以及fclose(stdout)
。