LINUX.ORG.RU

Сообщения DimG

 

по поводу man,exec и fork

Всем привет. Суть вопроса. Вот код:
--------------------------
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stddef.h>


int main()
{
pid_t chpid;
chpid=fork();
if(chpid==0) // child
{
sleep(3);
execlp(«/usr/bin/man»,«/usr/bin/man»,«ps»,NULL);
   
}

}
-------------------
все работает, man даже пытается запуститься, но потом выводит:
/usr/bin/man: command exited with status 1:pager -s

Внимание, вопрос=) В чем проблема? Здесь ключевую роль играет смерть родителя, т.к. если родителя, допустим зациклить, или сделать sleep хотя бы на 5 секунд, то все работает.

Попутный вопрос. В чем заключается роль лидера группы процессов?? Чем группа с лидером отличается от группы без лидера? Перерыл кучу сайтов и книжек, ничего не нашел. Просто в данном случае родитель — лидер группы, и возможно, это имеет принципиальное значение.



P.S. обнаружил замечательную вещь: если прогнать все это дело под strace'ом, то все работает. чудеса... тем, не менее, вопрос открыт=) А то на сдаче задания требуют объяснить, а никто не знает(


DimG
()

RSS подписка на новые темы