当前位置: 技术问答>linux和unix
进程创建,优先级??
来源: 互联网 发布时间:2016-06-04
本文导语: #include #include int main(){ pid_t val; printf("pid before fork():%dn",(int)getpid()); val=fork(); if(val != 0) printf("Parent pid is %dn",(int)getpid()); else printf("Child pid is %dn",(int)getpid()); ...
#include
#include
int main(){
pid_t val;
printf("pid before fork():%dn",(int)getpid());
val=fork();
if(val != 0)
printf("Parent pid is %dn",(int)getpid());
else
printf("Child pid is %dn",(int)getpid());
return 0;
}
/*运行结果:
pid before fork():20415
Child pid is 20416
Parent pid is 20415
这说明,新创建的子进程优先级要高于父进程
但书上讲的是子进程的时间片(counter 变量)赋值为父进程的一半。
这样的话,子进程的优先级就低于父进程,父进程先运行,应该得到:
(书上的结果):
pid before fork():20415
Parent pid is 20415
Child pid is 20416
这结果也符合描述
谁能帮忙解释一下?
谢谢大家!
*/
|
父进程和子进程谁先执行这是和当时的具体的环境有关,没有确定性,fork函数返回值
为0的话,表示的是在执行子进程,大于0的话,返回的是子进程的id号,一般我们会通过
一个判断来确定是谁先执行。
为0的话,表示的是在执行子进程,大于0的话,返回的是子进程的id号,一般我们会通过
一个判断来确定是谁先执行。
|
起始谁先运行是cpu和调度程序的问题
加一句话,可以看到你要的结果
加一句话,可以看到你要的结果
#include
#include
int main()
{
pid_t val;
printf("pid before fork():%dn",(int)getpid());
val=fork();
if(val != 0)
{
printf("Parent pid is %dn",(int)getpid());
sleep(2);
}
else
{
sleep(1);
printf("Child pid is %dn",(int)getpid());
}
return 0;
}
|
你这种回复还不如不回