当前位置: 技术问答>linux和unix
菜鸟求教!关于进程调度的问题!
来源: 互联网 发布时间:2016-04-22
本文导语: 各位大侠,本人刚刚开始学习Linux的嵌入式开发,在看资料的时候看到了父进程创建子进程的地方,调用了fork函数,假如如下代码: main() { int pid ; printf("before call fork n") ; pid = fork(); if(pid=...
各位大侠,本人刚刚开始学习Linux的嵌入式开发,在看资料的时候看到了父进程创建子进程的地方,调用了fork函数,假如如下代码:
main()
{
int pid ;
printf("before call fork n") ;
pid = fork();
if(pid==0)
{
printf("This is child process pid=[%d] n",pid) ;
}
else if(pid>0)
{
printf("This is father process pid=[%d] n",pid) ;
}
else
{
printf("ERRORn") ;
}
}
现在我的困惑的是,进程调度的时候,每次调度父进程的时候,是不是都要调用“pid = fork();”呢?如果每次都调用的话,那岂不是要一直创建子进程哦?
在调度子进程的时候,也要调度“pid = fork();”吗?调度他的时候是否是继续创建子进程呢?
望个位大侠给我这个菜鸟指点迷津哦!!
main()
{
int pid ;
printf("before call fork n") ;
pid = fork();
if(pid==0)
{
printf("This is child process pid=[%d] n",pid) ;
}
else if(pid>0)
{
printf("This is father process pid=[%d] n",pid) ;
}
else
{
printf("ERRORn") ;
}
}
现在我的困惑的是,进程调度的时候,每次调度父进程的时候,是不是都要调用“pid = fork();”呢?如果每次都调用的话,那岂不是要一直创建子进程哦?
在调度子进程的时候,也要调度“pid = fork();”吗?调度他的时候是否是继续创建子进程呢?
望个位大侠给我这个菜鸟指点迷津哦!!
|
进程调度是OS的事,你不用管
|
当父进程调用pid = fork(); 的时候,创建子进程;子进程从pid = fork();下一句开始执行,并不会调用pid = fork();。
|
父、子进程从pid = fork();下一句开始执行
|
一样的。
|
fork创建子进程后,父子进程的开始点都是fork的下一条语句,区别是fork的返回,父进程返回大于0的数(子进程号)子进程返回的是0,所以一般在fork下一条语句都是一个分支判断语句,就同你贴的代码一样