2013-12-10 3 views
0

Мне нужно убить java-процесс, который запускает основной класс blabla.class. По этой причине я могу использовать функцию kill(pid_t, SIGKILL), но мне нужно получить PID ID.Получить PID, когда есть фрагмент имени программы

Я могу запустить команду linux ps-ax | grep blabla, чтобы найти ПИД-идентификатор. Каков наилучший способ сделать это с помощью C?

+3

Вы можете либо запустить 'ps' в подпроцессе, или тролль через подкаталоги в процессе каталога/Proc себя, проверяя каждый/ргос/# ##/cmdline против вашей картины интереса. –

+1

'man pgrep',' man pkill' – bobah

+0

Возможный дубликат [Как получить PID процесса в Linux в C] (http://stackoverflow.com/questions/8166415/how-to-get-the-pid -of-a-process-in-linux-in-c) – Marco

ответ

1

Адаптирование ссылки дали Марко https://stackoverflow.com/a/8166467/1967396:

#define LEN 100 
char line[LEN]; 
FILE *cmd = popen("ps -ax | grep blabla", "r"); 

fgets(line, LEN, cmd); 
// now parse `line` for the information you want, using sscanf perhaps? 
// I believe the pid is the first word on the line returned, and it fits in an int: 
int pid; 
sscanf(line, "%d", &pid); 

pclose(cmd); 
Смежные вопросы