fork是linux函数吗,关于fork()函数的问题,C高手请进

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

各位大虾:

大家好,我编写一个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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值