2016-10-13 56 views
0

sigaction(SIGTSTP, &act, NULL)シグナルハンドラを実装しました。このシグナルハンドラから、シグナルを送信しているプロセスのpidを取得できました。そして、このPIDを持つ私は、コマンドlinuxのpidからプロセスのパスまたは名前を取得する方法

ls -l /proc/pid/exe 

を使用して、そのプロセスのパスを取得しようとしていますが、それはでも、私はプロセスがリストされていないコマンド「PS」を実行しています

ls: /proc/23710/exe: No such file or directory 

メッセージ

を示しています。誰も私にそのようなプロセスのパスまたは名前を取得する方法を教えてもらえますか?あなたは /proc/<pid>/cmdlineを読むことができ、PIDからプロセスのコマンドラインを取得することができます

+0

シグナルハンドラから 'ls'を実行していますか?それはうまく終わらないでしょう。 –

+0

[MCVE](http://stackoverflow.com/help/mcve)をご覧ください。おそらく 'si_pid'の検査が間違っているかもしれません。おそらく代わりに、あなたがチェックした時点でシグナリングプロセスが完了しますが、コーディングエラーが起きそうです。 – pilcrow

答えて

0

/proc/[pid]/cmdline 
      This read-only file holds the complete command line for the 
      process, unless the process is a zombie. In the latter case, 
      there is nothing in this file: that is, a read on this file 
      will return 0 characters. The command-line arguments appear 
      in this file as a set of strings separated by null bytes 
      ('\0'), with a further null byte after the last string. 

ことから、プロセスのパスや名前を得ることができます。

関連する問題