2014-11-06 7 views
0

У меня есть программа уровня пользователя, которая будет принимать PID в качестве входа. Прежде чем приступать к выполнению программы, мне нужно проверить, есть ли у меня этот процесс или нет.Владение процессом в linux при условии, что это PID

Я новичок в Linux, мне было интересно, есть ли способ проверить, есть ли у меня этот процесс ..?

ответ

0

Возможно, самый простой способ - проверить владельца псевдокаталога /proc/PID.

Вы можете получить владельца файла или каталога с помощью функции stat(). И вы можете сравнить его с вашим, что вы получите с geteuid() или getuid().

Что-то вдоль линий:

char name[50]; 
struct stat st; 
sprintf(name, "/proc/%d", pid); 
stat(name, &st); 
printf("uid: %d gid: %d\n", st.st_uid, st.st_gid); 

Однако, вам следует пересмотреть, почему вам это нужно в первую очередь. Если, например, вы хотите отправить сигнал (kill()), этот процесс не должен проверять, сможете ли вы это сделать. Вы просто попробуете его, а затем рассмотрите случай, когда операция завершилась неудачно.