我们有一个基于http://www.itp.uzh.ch/~dpotter/howto/daemonize上的实现从终端分离的 linux 代码。
这是它的代码片段:
....
freopen( "/dev/null", "r", stdin);
freopen( "/dev/null", "w", stdout);
freopen( "/dev/null", "w", stderr);
kill( parent, SIGUSR1 );
}
我可以通过以下方式关闭标准文件描述符,而不是重定向到/dev/null并获得相同的结果:
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
现在,我有点坚持使用什么方法:重定向或关闭?每种方法的潜在问题是什么?