【发布时间】:2017-12-05 08:45:20
【问题描述】:
我有一个将数据写入文件的程序。通常,该文件在磁盘上,但我正在尝试写入/dev/stdout。目前,当我这样做时,程序不会退出,直到我按下 Ctrl-C 。有没有办法让程序发出输出完成的信号?
编辑:
目前,一个磁盘文件是通过fopen(FILE_NAME)打开的,所以我现在尝试将/dev/stdout作为FILE_NAME传入。
编辑 2:
命令行是
MY_PROGRAM -i foo -o /dev/stdout > dump.png
编辑 3:
看起来这里的问题是stdout 已经打开,我正在第二次打开它。
【问题讨论】:
-
用哪种语言编写的程序?
-
另外——说
/dev/stdout意味着你正在打开一个单独的句柄,而不是使用预先打开的FD 1。如果你正在做类似的事情,一个答案需要知道详细信息要完整完整——这是一个minimal reproducible example 会有所帮助的地方。 -
(实际上,
open("/dev/stdout")等价于dup(1)——它只是复制了一个您已经拥有的文件描述符,因为它是从父级继承的。如果没有令人信服的理由,这通常不是人们应该做的)。 -
Err -- 现在你说的是 C++,但是标记了 C。这是两种非常、非常不同的语言。您能否更正标签或文本以使它们保持一致?
-
抱歉,是 c 和 c++ 的混合体 - 文件 io 使用较旧的 fopen/fclose 接口处理。