2012-02-12 17 views
2

の状態を確認。私はLinux環境では、C(、ランニング寝て、または終了した)を使用して、プロセスの状態を把握しようとしていますプロセス

最初にこれを行う方法についての私の考えは、コマンドps 12345を使ってexecv()を呼び出すことでした。ここで、12345はプロセスIDになり、STATの取得にはその出力を解析します。しかし、私は自分のプログラムにその出力を得ることはできないと思っています。それは自動的に出力されるだけです(または私は可能でしょうか?)。

また、私はプロセスにシグナルを送ることができると考えていたが、私はこれを行うには良い方法を発見していない、そしてこのようにプロセスの状態を決定することが可能であれば私も知りません。

だから、私の質問は、どのように私はCでのプロセスの状態を判断しますか? Linuxでは

答えて

8

/proc/[pid]/statと呼ばれるスペースで区切られた値のファイルがあります。 3番目の値はプロセス状態です。例えば

:私はちょうどstatfscanfを使用することになり

[[email protected] self]$ cat /proc/3529/status 
Name: bash 
State: S (sleeping) 
.................... 

[[email protected] self]$ cat /proc/3529/stat 
3529 (bash) S 3528 3529 ...... 
      ^

また、/proc/[pid]/statusファイルもあります。

+0

これは、その端末を知っていますか良いことだ「Eさんは、Linuxでそううまくクリーンアップされています:-) –

+0

私はCにかなり新しいです、これは私がC.そうに書かれている最初のプログラムであり、 'fscanf'はなりstrが 'char str [80];'である 'fscanf(/ proc/[pid]/status、"%s "、str)'として動作し、これは 'Name: '(/ proc/[pid]/statusの最初の出力)? – dubyaa

2

コマンドの出力を解析したい場合は、popenを使用しています。

私は(注:/proc/12345/statusもあります)...アクセスプロセス情報のC APIが存在する必要があり、これを行うための簡単な方法があると思い

関連する問題