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



我有一个将数据写入文件的程序。通常,该文件在磁盘上,但我正在尝试写入/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)

最新更新