2011-07-23 7 views
0

Iveは私のプログラムを6つのソースファイルに入れました。目的はこれらのファイルを他のLinux OSコンピュータにコピーして(おそらくコンパイルしています。このプログラムはバックグラウンドです。以下のような何か:バックグラウンドでプログラムを実行しています

[email protected]:~$ program 

プログラムがバックグラウンドで実行されています。プログラムを停止するには、 XXXと入力してください。

これに関するヒント

ありがとうございます!

答えて

0

daemon(0,0);コールをCプログラムに入れます。

これを停止するのはちょっと難しいですが、プログラムのコピーが1つしかないと思います。プログラムのPIDをファイルに入れて、ファイルからPIDを読み込み、それを強制終了する別のユーティリティ(XXX)を書きます。

重要:daemon forksは、デーモンを呼び出した後にプログラムのPIDを取得します。

しかし、多分あなたはnewbyであり、ちょうどprogram&とそれ以降のkillとあなたのプログラムを実行したいと思うかもしれません。

+0

はい、最初の方法を使用するにはあまりにも初心者ですが、このようにする必要があります。最初の解決策についてもう少し詳しい情報を提供してください(詳細は、コードのスニペットが最適です)。ありがとうございました – shaggy

0

私は完全に質問を逸した。これにはシェルスクリプトが必要です。

ファイルのコピーにはscpを使用できます。他のホストでコマンドをsshで実行してください。

pid=`ssh [email protected] "make >/dev/null 2>&1; nohup ./program; echo $!` 

あとで

ssh [email protected] "kill $pid" 
+0

いいえ、あなたはしませんでした。あなたが最初に投稿した解決策はOKです。私はファイル内にPIDを持っていて、 'kill()'を使ってプロセスを終了しようとしていますが、どのシグナルを送るべきか分かりません。私は0を試しましたが、うまくいきませんでした。そして、私はいくつかの 'raise()'シグナルを試しましたが、どちらも動作しませんでした。私は何を使うべきですか? – shaggy

+0

SIGTERM、SIGKILLが動作しない場合。 –

+0

私はSIGTERMの前にSIGQUITを試してみました:もう少し丁寧です:) –

0

まずでそれを停止することができ、あなたは()をフォークする必要があります。それは(テストしていない)のようなものでなければなりません。

親プロセスでは、子プロセスで終了する必要があります.SIGHUPシグナルを処理する必要があります。

このように - デーモンがあります。

関連する問題