Я занимаюсь школьным проектом: мне нужно управлять многими процессами. После того, как они сгенерированы родителем (wht fork ()) и запущены с execve, они должны общаться друг с другом, и они отлично работают. Проект включает в себя 2 файла .c, один из которых (отец создает детей), а другой - с кодом детей. Проблема возникает, когда у меня есть много процессов очередей и ожидания, которые хотят получить доступ к критическому разделу (где я решил внедрить семафор мьютекса)
Код похож на:
decrease_semaphore
//start critical section
kill(pid,signal) /*try to send a signal to a probably queuing process at the same semaphore*/
increase_semaphore
//end of critical section
Отправленный сигнал захватывается обработчиком, написанным мной.
Итак, что происходит с процессом организации очереди, в который отправляется сигнал? Получает ли он его и покидает очередь ожидания, выполняя обработчик?
Или он остается в очереди и выполняет обработчик после того, как ему удается получить доступ к критическому разделу?
извините за любые неточностиЯ недавно начал писать в c:)