为什么 c 应用程序没有写入 nohup.out

为什么 c 应用程序没有写入 nohup.out

我使用 c 为我的两台服务器编写了一个简单的主从故障转移设置,运行 redhat6,使用 udp 心跳来相互监控。在我的应用程序中,我打印了一些信息,例如,收到心跳,服务器健康等等。我希望它在后台运行并将这些 printfs 附加到 nohup.out。所以我发出了下面的命令,

nohup ./appname &

nohup: ignoring input and appending output to nohup.out

应用程序正在后台运行,但输出未附加到 nohup.out。我以为它被缓冲了,所以我花了一些时间并将其终止,但 nohup.out 仍然是空的,

对此有什么想法吗?

答案1

正如@greg指出的那样,nohup.out 被缓冲了。将 stdout 的缓冲区大小设置为 null 即可解决此问题。

setbuf(stdout, NULL);

相关内容