Hi All!
Хочу запустить одну независимую программу из другой, но не ждать ее завершения, а работать с ней параллельно. В реальной задачи совместить исходники и раздвоиться fork() возможности нет. Я надеялся запустить программу монитор функцией execlp(), в программе монитора раздвоиться fork() и убить родительский процесс, что бы заработал root.
Исходники программ:
root.c
#include <stdio.h>
#include <unistd.h>
int main()
{
execlp(?./monitor?,NULL)
printf("root OK\n");
while(1) ;
exit(1);
}
monitor.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
pid_t pid;
if ((pid=fork())==-1)
{//Fork error, exiting
perror('monitor');
exit(1);
}
else
if (pid)
exit(1);
while(1) ;
exit(1);
}
Однако на панели задач вместо двух процессов в бесконечных циклах есть только monitor, а root пишет root OK в консоли и исчезает! Как так может быть?! При закомментировании execlp(?./monitor?,NULL) работает бесконечный цикл.
Спасибо.
|