你敢吗?抛砖引玉的问题,值得一看
路过的技术牛人,想请教一个问题。我想用fork产生3个子进程,分别执行不同的任务。并且给他们设定不同的优先级,让他们按照优先级执行。
我的代码在下面。进程1,child1的优先级是14.child2的优先级是10.child3的优先级是-3.按道理应该是子进程child3先执行。
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
#include<sys/time.h>
#include<sys/resource.h>
#include<sys/types.h>
void main()
{
pid_t father,child1,child2,child3;
int prio;
father=getpid();
setpriority(PRIO_PROCESS,0,20);
//nice(10);
printf("the father ID is : %d\n",father);
prio=getpriority(PRIO_PROCESS,0);
printf("the father priority is %d\n",prio);
child1=fork();
if(child1==0) {
setpriority(PRIO_PROCESS,0,14);
prio=getpriority(PRIO_PROCESS,0);
printf("the child one ID is : %d\n",getpid());
printf("the child one priority is %d\n",prio);
}
else if(child1>0){
child2=fork();
if(child2==0) {
setpriority(PRIO_PROCESS,0,10);
prio=getpriority(PRIO_PROCESS,0);
printf("the child two ID is : %d\n",getpid());
printf("the child two priority is %d\n",prio);
}
else if(child2>0){
child3=fork();
if(child3==0) {
setpriority(PRIO_PROCESS,0,-3);
prio=getpriority(PRIO_PROCESS,0);
printf("the child three ID is : %d\n",getpid());
printf("the child three priority is %d\n",prio);
}
else if(child3>0) {
printf("my ID is %d\n",getpid());
printf("my prio is %d\n",getpriority(PRIO_PROCESS,0));
}
}
}
}
执行结果是:
先执行1,再 2,再3
我的代码在下面。进程1,child1的优先级是14.child2的优先级是10.child3的优先级是-3.按道理应该是子进程child3先执行。
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
#include<sys/time.h>
#include<sys/resource.h>
#include<sys/types.h>
void main()
{
pid_t father,child1,child2,child3;
int prio;
father=getpid();
setpriority(PRIO_PROCESS,0,20);
//nice(10);
printf("the father ID is : %d\n",father);
prio=getpriority(PRIO_PROCESS,0);
printf("the father priority is %d\n",prio);
child1=fork();
if(child1==0) {
setpriority(PRIO_PROCESS,0,14);
prio=getpriority(PRIO_PROCESS,0);
printf("the child one ID is : %d\n",getpid());
printf("the child one priority is %d\n",prio);
}
else if(child1>0){
child2=fork();
if(child2==0) {
setpriority(PRIO_PROCESS,0,10);
prio=getpriority(PRIO_PROCESS,0);
printf("the child two ID is : %d\n",getpid());
printf("the child two priority is %d\n",prio);
}
else if(child2>0){
child3=fork();
if(child3==0) {
setpriority(PRIO_PROCESS,0,-3);
prio=getpriority(PRIO_PROCESS,0);
printf("the child three ID is : %d\n",getpid());
printf("the child three priority is %d\n",prio);
}
else if(child3>0) {
printf("my ID is %d\n",getpid());
printf("my prio is %d\n",getpriority(PRIO_PROCESS,0));
}
}
}
}
执行结果是:
先执行1,再 2,再3
...全文
相关推荐
成语故事抛砖引玉.docx
此外,“抛砖引玉”还体现在各种项目管理和团队协作的环节中。项目经理有时故意留下一些可探讨的空间,让团队成员提出问题和建议,从而引导整个团队进行更全面的规划和更有效的执行。
SAS语言抛砖引玉(一位有心人写得很好的SAS基础知识介绍)
"SAS语言抛砖引玉(一位有心人写得很好的SAS基础知识介绍)"本书《SAS语言抛砖引玉》是一本专注于SAS语言基础的教程,旨在填补市面上统计应用书籍多而语言基础教程匮乏的空白。作者认识到,很多初
SAS 语言抛砖引玉
调试程序是编程中不可或缺的一部分,了解常见的错误分类和如何调试可以帮助用户快速定位问题并解决问题。本书的附录提供了SAS系统管理与环境设置的指导,以及SAS常用语句的参考。
ASP.net企业实战 抛砖引玉下
以下是整套所有的文件名:ASP.net企业实战 抛砖引玉上ASP.net企业实战 抛砖引玉下ASP.net企业实战 抛砖引玉续ASP.net企业实战 VS
《SAS语言抛砖引玉》
《SAS语言抛砖引玉》任何想学习和了解SAS语言的人。


