Моя цель - создать N дочерний процесс с одним отцом процесса.не может выполнить execl после fork
Я использую два files.The первого именем forkn.c, который содержит этот код:
#include <sys/types.h>
#include <wait.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char* argv[])
{
int status =4;
int i=1;
int wpid;
for (int cpt=0;cpt<atoi(argv[1]);cpt++)
{
if (i>0)
{
i=fork();
if(i>0)
printf("I create process number %d \n",cpt+1);
}
}
//The father process created argv [1] son process. This ensures a single father and argv [1] son process
if(i==0)
{
execl("~/tpBash/tp2/argv[2]","argv[2]",(char*) NULL);
}
if (i>0)
{
for(int cpt=0;cpt<atoi(argv[1]);cpt++)
{
wait(&status) ;
}
printf("I am the father, I waited all my son processes, I finished \n");
}
}
И есть код trait2.c:
#include <sys/types.h>
#include <wait.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
int status =4;
printf("I am the child process,my PID is : %d \n",getpid());
exit(status);
}
После того как я компиляции:
gcc -std=c99 forkn.c -o forkn
gcc -std=c99 trait2.c -o trait2
А затем запустите исполняемый файл:
./forkn 3 trait2
Первыми аргументами являются N (число дочернего процесса для создания), а второй аргумент - имя исполняемого файла. Моя проблема в том, что дочерний процесс не работает. Любая идея, пожалуйста
Хранить в что фраза «сыновья процессы» на самом деле не используется. Насколько я знаю, процессы не имеют гендерного равенства и поэтому просто называются «дочерними процессами», когда они говорят об их отношении к родителям. –
спасибо за совет. Я плохо на английском –
Ваш текущий код - вилка. Вы должны прочитать еще пример кода, который уже работает и модифицирует его в соответствии с вашими потребностями. –