Я новичок в языке c и Linux. У меня проблема, связанная с функциями fork(), getpid() и exec(). Я написал программу c, используя вызов fork(), код моей программы выглядит следующим образом:
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
void fun()
{
printf("\n this is trial for child process");
}
int main (int argc, char const *argv[])
{
int i,status,pid,t;
if(pid=fork()<0)
{
printf("\nfailed to create the process\n");
}
if(pid=fork()==0)
{
printf("\n the child process is created");
fun();
exit(1);
}
while(wait(&status)!=pid);
return 0;
}
Вывод этой программы следующий:
дочерний процесс создан
это испытание для дочернего процесса
дочерний процесс создан
это испытание для дочернего процесса
Теперь мои вопросы следующие:
- Почему вывод программы показывает одно и то же дважды? Вывод должен быть "дочерний процесс создан, это пробная версия для дочернего процесса"
- Почему вывод не соответствует коду?
- Можем ли мы иметь программу, которая имеет 4 процесса, и все процессы выполняют разные задачи, например, один процесс печатает «мое имя». Один процесс печатает «мой возраст», другой процесс печатает «мой адрес?
- Как сделать несколько процессов в основной функции?
- Как контролировать выполнение нескольких процессов?
- что делает функция
exec()
? Кто-нибудь может объяснить мне работуexec()
,fork()
,getpid()
с исходным кодом?
Пожалуйста, помогите этому новичку.