Как получить PID, ожидающие на семафор
Если я связываю застрявший процесс и вижу вывод формы:
[gaius@redhat64 bin]$ strace -p 18185
Process 18185 attached - interrupt to quit
[ Process PID=18185 runs in 32 bit mode. ]
semop(458760, 0xffa00af0, 1
Как мне узнать PID, который в последний раз увеличивал семафор / который я жду? Я знаю о lpid
колонка в ipcs -p
но это работает только для сегментов общей памяти.
Моя ОС RHEL 5.4 (Tikanga) на x86_64. Спасибо!
1 ответ
Решение
Быстро и грязно:
#include <sys/sem.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
int pid;
if (argc != 2) return 1;
pid = semctl(atoi(argv[1]), 0, GETPID);
printf("%d\n", pid);
return 0;
}
(Я предполагаю здесь.)