У нас есть код Linux, который отсоединяется от терминала на основе реализации, найденной на https://web.archive.org/web/20180223192524/http://www.itp.uzh.ch/~dpotter/howto./daemonize.
Вот фрагмент кода из него:
....
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);
На данный момент я немного застрял с тем, какой подход использовать: перенаправить или закрыть? каковы потенциальные проблемы каждого подхода?