Iveは私のプログラムを6つのソースファイルに入れました。目的はこれらのファイルを他のLinux OSコンピュータにコピーして(おそらくコンパイルしています。このプログラムはバックグラウンドです。以下のような何か:バックグラウンドでプログラムを実行しています
[email protected]:~$ program
プログラムがバックグラウンドで実行されています。プログラムを停止するには、 XXXと入力してください。
これに関するヒント
ありがとうございます!
Iveは私のプログラムを6つのソースファイルに入れました。目的はこれらのファイルを他のLinux OSコンピュータにコピーして(おそらくコンパイルしています。このプログラムはバックグラウンドです。以下のような何か:バックグラウンドでプログラムを実行しています
[email protected]:~$ program
プログラムがバックグラウンドで実行されています。プログラムを停止するには、 XXXと入力してください。
これに関するヒント
ありがとうございます!
daemon(0,0);
コールをCプログラムに入れます。
これを停止するのはちょっと難しいですが、プログラムのコピーが1つしかないと思います。プログラムのPIDをファイルに入れて、ファイルからPIDを読み込み、それを強制終了する別のユーティリティ(XXX
)を書きます。
重要:daemon
forksは、デーモンを呼び出した後にプログラムのPIDを取得します。
しかし、多分あなたはnewbyであり、ちょうどprogram&
とそれ以降のkill
とあなたのプログラムを実行したいと思うかもしれません。
私は完全に質問を逸した。これにはシェルスクリプトが必要です。
ファイルのコピーにはscp
を使用できます。他のホストでコマンドをssh
で実行してください。
pid=`ssh [email protected] "make >/dev/null 2>&1; nohup ./program; echo $!`
あとで
ssh [email protected] "kill $pid"
いいえ、あなたはしませんでした。あなたが最初に投稿した解決策はOKです。私はファイル内にPIDを持っていて、 'kill()'を使ってプロセスを終了しようとしていますが、どのシグナルを送るべきか分かりません。私は0を試しましたが、うまくいきませんでした。そして、私はいくつかの 'raise()'シグナルを試しましたが、どちらも動作しませんでした。私は何を使うべきですか? – shaggy
SIGTERM、SIGKILLが動作しない場合。 –
私はSIGTERMの前にSIGQUITを試してみました:もう少し丁寧です:) –
まずでそれを停止することができ、あなたは()をフォークする必要があります。それは(テストしていない)のようなものでなければなりません。
親プロセスでは、子プロセスで終了する必要があります.SIGHUPシグナルを処理する必要があります。
このように - デーモンがあります。
はい、最初の方法を使用するにはあまりにも初心者ですが、このようにする必要があります。最初の解決策についてもう少し詳しい情報を提供してください(詳細は、コードのスニペットが最適です)。ありがとうございました – shaggy