该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
各位大虾:
大家好,我编写一个linux C程序的时候,用到fork()函数,遇到了一个问题,我用fork()函数建立了一个子进程,然后用switch对于父进程和子进程进行判断,在父函数和子函数中,我分别打印了其进程号,而且每打印一次便sleep一秒钟,总共打印10次,也就是说要sleep10秒钟,父进程和子进程就是总共打印20秒。我预期的结果应该是两个进程并行执行打印的操作,也就是说,打印的进程号应该是交替的,但是,我每次运行该程序的时候,都是子进程先执行,然后父进程再执行,不知道为什么,我以前也遇到过这样的问题,但是当时我并没有让一个进程打印这么久,以为是处理速度比较快,这样可能看不到并行执行进程的效果,但是,这次应该是可以看到并行执行的效果吧,所以我很不解,下面是我程序的主函数,请大家帮忙解答,小弟感觉不尽!
int main(){
int i=0,j=0;
pid_t pid;
pid = fork();
switch(pid){
case -1:
perror("fork fail");
case 0:
while(i!=10){
fprintf(stdout,"hello i am child process %d\n",(int)getpid());
sleep(1);
i++;
}
kill(getpid(),SIGKILL);//每次进程执行完毕就自动结束
case 1:
while(j!=10){
fprintf(stdout,"hello i am parent process %d\n",(int)getpid());
sleep(1);
j++;
}
kill(getpid(),SIGKILL);//每次进程执行完毕就自动结束
}
return 0;
}