我在 C main 方法的顶部有一个 if 语句,它检查 STDIN 是否打开。如果它打开,程序会打印错误并退出。这主要是出于文档原因。我不希望该程序的用户假设支持将内容传递给 STDIN。
但是,当我尝试将此程序作为 SystemD 守护进程执行时,出现了问题。
SystemD 程序似乎总是有一个开放的 STDIN 管道。
这是为什么呢?可以避免吗?
如果 fd 0 没有打开,那就有点糟糕了,因为下一次打开会导致 fd 0 被使用。因此,打开它是很常见的,但是从
/dev/null
开始读取。