for() 在 fork 停止 child 创建后循环
for() loop after fork stops child creation
我的系统上有 fork 问题
使用此程序:
# include <assert.h>
# include <stdio.h>
# include <stdlib.h>
# include <unistd.h>
# include <sys/stat.h>
# include <sys/types.h>
# include <fcntl.h>
# include <sys/wait.h>
# include <string.h>
int main()
{
int i;
for( i=0; i<5;i++)
{
fork();
printf("getpid():%i",getpid());
for( i=0; i<10;i++)
{
printf("%i\t",i);
}
}
return 0;
}
我希望它分叉几次,并在每个分叉中进行第二个 for 循环 child。但是第一个 "for" 循环似乎在第一个 fork 进程处阻塞。
我只得到这个输出:
getpid():45200 1 2 3 4 5 6 7 8 9getpid():45210 1 2 3 4 5 6 7 8 9
而不是 childrens 如果他们正确执行第二个 "for" 循环通常应该打印的所有其他输出。
程序运行良好。在 2 个循环中使用不同的变量进行迭代。此外,为了便于阅读,稍微编辑了打印语句。
# include <assert.h>
# include <stdio.h>
# include <stdlib.h>
# include <unistd.h>
# include <sys/stat.h>
# include <sys/types.h>
# include <fcntl.h>
# include <sys/wait.h>
# include <string.h>
int main()
{
int i;
for( i=0; i<5;i++)
{
fork();
printf("getpid():%i ",getpid());
for(int j=0; j<10;j++) //Use variable j instead of i.
{
printf("%i\t",j);
}
printf("\n");
}
return 0;
}
我的系统上有 fork 问题 使用此程序:
# include <assert.h>
# include <stdio.h>
# include <stdlib.h>
# include <unistd.h>
# include <sys/stat.h>
# include <sys/types.h>
# include <fcntl.h>
# include <sys/wait.h>
# include <string.h>
int main()
{
int i;
for( i=0; i<5;i++)
{
fork();
printf("getpid():%i",getpid());
for( i=0; i<10;i++)
{
printf("%i\t",i);
}
}
return 0;
}
我希望它分叉几次,并在每个分叉中进行第二个 for 循环 child。但是第一个 "for" 循环似乎在第一个 fork 进程处阻塞。
我只得到这个输出:
getpid():45200 1 2 3 4 5 6 7 8 9getpid():45210 1 2 3 4 5 6 7 8 9
而不是 childrens 如果他们正确执行第二个 "for" 循环通常应该打印的所有其他输出。
程序运行良好。在 2 个循环中使用不同的变量进行迭代。此外,为了便于阅读,稍微编辑了打印语句。
# include <assert.h>
# include <stdio.h>
# include <stdlib.h>
# include <unistd.h>
# include <sys/stat.h>
# include <sys/types.h>
# include <fcntl.h>
# include <sys/wait.h>
# include <string.h>
int main()
{
int i;
for( i=0; i<5;i++)
{
fork();
printf("getpid():%i ",getpid());
for(int j=0; j<10;j++) //Use variable j instead of i.
{
printf("%i\t",j);
}
printf("\n");
}
return 0;
}