可能性の重複:
Linux: Prevent a background process from being stopped after closing SSH clientfork()を使用して親プロセスと独立して子プロセスをデーモン化する方法は?
は、私は(Linuxボックス上で、通常はSSHから)、端末上でアクセスして対話するCプログラムを持っています。私は問題を解決しようとしていますが、ターミナル/ログアウトを閉じた後、プロセスはそれで終了します(プログラムは基本的にいくつかのオプションを要求し、それ以上の対話を必要とせずにビジネスを行っています。 SSHのログアウト後も引き続き実行されます)。
linuxでは 'screen'などのようにこれを避ける方法がありますが、画面のようなインストールされたパッケージに依存せずに、プログラムでCでやりたいのです。
これまでのところ、fork()はプロセスをデーモン化する標準的な方法であると理解しています。だから誰も私が上記のプロセスを実行できるようにするコードを完成させるのに役立つでしょうか?親の中
:
main()
{
//Do interactive stuff
signal(SIGCHLD, SIG_IGN); //stops the parent waiting for the child process to end
if(fork())
exit(0);
// and now the program continues in the child process
私は、元のシェルを閉じ...と子供がその作業を続けてSSHのログアウトできるようになりました!
//Continue with processing data/whatever the program does (no input/output to terminal required)
exit(0);
を使用してそれを無視してみてください。 http://stackoverflow.com/questions/285015/linux-prevent-a-background-process-from-being-stopped-after-closing-ssh-client –
um、実行するときに 'nohup'を使用するだけですか?フォークは必要ありません。 –
@ Brian、nohupはプログラムとやりとりすることはできません。そのコマンドラインのやりとり。 – user1166981