为什么在 SystemD 中运行的程序默认打开 STDIN?

问题描述 投票:0回答:1

我在 C main 方法的顶部有一个 if 语句,它检查 STDIN 是否打开。如果它打开,程序会打印错误并退出。这主要是出于文档原因。我不希望该程序的用户假设支持将内容传递给 STDIN。

但是,当我尝试将此程序作为 SystemD 守护进程执行时,出现了问题。

SystemD 程序似乎总是有一个开放的 STDIN 管道。

这是为什么呢?可以避免吗?

c io stdin systemd
1个回答
0
投票

如果 fd 0 没有打开,那就有点糟糕了,因为下一次打开会导致 fd 0 被使用。因此,打开它是很常见的,但是从

/dev/null
开始读取。

© www.soinside.com 2019 - 2024. All rights reserved.