2016-10-13 5 views
0

Я внедрил обработчик сигнала sigaction(SIGTSTP, &act, NULL), из которого я могу получить pid процесса, который посылает сигнал. И с этим ВЗОМТОМ Я пытаюсь получить путь к этому процессу с помощью командыКак получить путь или имя процесса из pid в linux

ls -l /proc/pid/exe 

но он показывает сообщение

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

Даже я уверен, выполнение команды «пса» процесс не указан , Может ли кто-нибудь сказать мне, как получить путь или название такого процесса?

+0

Вы используете 'ls' из обработчика сигналов? Это не закончится хорошо. –

+0

Покажите нам [MCVE] (http://stackoverflow.com/help/mcve), пожалуйста. Возможно, ваш осмотр 'si_pid' ошибочен. Возможно, вместо этого процесс сигнализации будет получен к моменту проверки, но ошибка кодирования кажется более вероятной. – pilcrow

ответ

0

Вы можете получить командную строку процесса с PID, вы можете прочитать /proc/<pid>/cmdline:

/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. 

От того, вы можете получить путь или имя процесса.

Смежные вопросы