我的目標是創建具有一個進程父的N進程子進程。無法在fork後執行execl
我用兩個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(要創建的子進程的數量),第二個參數是要執行的文件的名稱。 我的問題是,子進程不起作用。 任何想法請
請請注意,「兒子進程」一詞並未真正使用。就我所知,流程是無性別的,因此在談到與父母的關係時簡單稱爲「子流程」。 –
感謝您的建議。我英文不好 –
您目前的代碼是叉形炸彈。您應該閱讀更多已經正常工作的示例代碼,並根據需要對其進行修改。 –