Форум — Development [C] запущен ли процесс c 0 0 Доброго времени суток ЛОР. Как с помощью Си зная только имя процесса узнать, запущен он в данный момент или нет? Ссылка
#define PROC_BASE "/proc" void readname(char *name, pid_t pid){ // считать имя процесса из /proc/... char *pp = name, byte, path[256]; int cntr = 0, file; sprintf (path, PROC_BASE "/%d/cmdline", pid); file = open(path, O_RDONLY); do{ // считываем имя без слешей read(file, &byte, 1); if (byte != '/') *pp++ = byte; else pp = name; } while(byte != EOF && byte != 0 && cntr++ < 255); close(file); } void killbrothers(int flag){ DIR *dir; struct dirent *de; pid_t pid, self; char name[256], myname[256]; if (!(dir = opendir (PROC_BASE))){ // открываем директорию /proc perror (PROC_BASE); exit (1); } self = getpid(); // свой идентификатор readname(myname, self); // свое имя процесса while ((de = readdir (dir)) != NULL){ // пока не дойдем до конца директории // пропустим, если директория не указывает на процесс, или указывает на self if (!(pid = (pid_t) atoi (de->d_name)) || pid == self) continue; readname(name, pid); // считываем имя процесса if(strncmp(name, myname, 255) == 0){ // если оно совпадает с self if(flag){ kill(pid, SIGQUIT); // убиваем, если flag != 0 } else{ kill(pid, SIGUSR1); exit(0); } } } if(flag) exit(0); closedir(dir); } Eddy_Em ☆☆☆☆☆ (27.06.10 22:04:08 MSD) Ссылка
под именем процесса подразумевается pid или имя исполняемго файла? anonymous (28.06.10 13:29:00 MSD) Ссылка
думаю, ответ нужно искать в районе исходников утилиты killall. оно умеет: killall -0 proc_name cydwic (28.06.10 15:41:54 MSD) Ссылка