所以我有这个功能,它分配N个子进程。但是,它似乎是多于指定的。你能告诉我我在做错什么吗?
谢谢
谢谢
void forkChildren(int nChildren){ int i; for(i = 1; i <= nChildren; i++){ pid = fork(); if(pid == 0) printf("I'm a child: %d PID: %d\n",i,getpid()); } }
主要是:
forkChildren(5);
我期待以下输出:
I'm a child: 1 PID: 2990 I'm a child: 2 PID: 2991 I'm a child: 3 PID: 2992 I'm a child: 4 PID: 2993 I'm a child: 5 PID: 2994
但是,我得到以下内容:
I'm a child: 1 PID: 2990 I'm a child: 2 PID: 2991 I'm a child: 3 PID: 2992 I'm a child: 4 PID: 2993 I'm a child: 5 PID: 2994 user@computer:~/directory/$ I'm a child: 2 PID: 2999 I'm a child: 3 PID: 3000 I'm a child: 3 PID: 3001 I'm a child: 4 PID: 3002 I'm a child: 5 PID: 3003 I'm a child: 5 PID: 3004 I'm a child: 4 PID: 3005 I'm a child: 5 PID: 3006 I'm a child: 4 PID: 3007 I'm a child: 5 PID: 3008 I'm a child: 3 PID: 3011 I'm a child: 4 PID: 3012 I'm a child: 4 PID: 3010 I'm a child: 5 PID: 3013 I'm a child: 5 PID: 3014 I'm a child: 5 PID: 3015 I'm a child: 4 PID: 3018 I'm a child: 5 PID: 3019 I'm a child: 5 PID: 3020 I'm a child: 5 PID: 3021 I'm a child: 5 PID: 3023 I'm a child: 5 PID: 3025 I'm a child: 5 PID: 3024 I'm a child: 4 PID: 3022 I'm a child: 5 PID: 3026 I'm a child: 5 PID: 3027