当前位置: 技术问答>linux和unix
问个很简单的问题,求进程调用FORK()的代码
来源: 互联网 发布时间:2015-10-30
本文导语: 很少在UNIX下写C程序,请大家看看. 1.实现在程序进行时通过系统调用fork()创建两个子程序,使父、子三个进程并行 2.利用系统调用nice()改变各进程的优先级 这是我照其它程序改的,请各位帮忙看看,是否对啊,对第1点来...
很少在UNIX下写C程序,请大家看看.
1.实现在程序进行时通过系统调用fork()创建两个子程序,使父、子三个进程并行
2.利用系统调用nice()改变各进程的优先级
这是我照其它程序改的,请各位帮忙看看,是否对啊,对第1点来说.
说实话我不太明白什么意思,MAIN()括号里的函数变量是什么意思.
如果要建两个子进程该怎么做呢.
#include
int main(int argc , char **argv)
{
int pid;
if ( (pid = fork()) == 0 )
{
printf("this is child n" );
exit(0);
}
else if ( (pid = fork()) > 0)
{
printf("this is father n" );
exit(0);
}
else
exit(1);
}
1.实现在程序进行时通过系统调用fork()创建两个子程序,使父、子三个进程并行
2.利用系统调用nice()改变各进程的优先级
这是我照其它程序改的,请各位帮忙看看,是否对啊,对第1点来说.
说实话我不太明白什么意思,MAIN()括号里的函数变量是什么意思.
如果要建两个子进程该怎么做呢.
#include
int main(int argc , char **argv)
{
int pid;
if ( (pid = fork()) == 0 )
{
printf("this is child n" );
exit(0);
}
else if ( (pid = fork()) > 0)
{
printf("this is father n" );
exit(0);
}
else
exit(1);
}
|
#include
int main(int argc , char **argv)//参数的定义可参见任何一本C的教科书
{
int pid_1;
int pid_2;
if ( (pid_1 = fork()) == 0 )
{// run at NO.1 child process
printf("this is child 1 n" );
exit(0);
}
else if (pid_1 > 0)
{// father process
// then fork another child process
if((pid_2=fork())==0)
{// run at NO.2 child process
printf("this is child 1 n" );
exit(0);
}
else if(pid_2>0)
{
//father process
}
}
printf("this is father n" );
exit(0);
}
else exit(1);
}
父进程fork了两个子进程,但是没有做任何同步的控制,故可能达不到真正并行的效果。
#关于nice的调用,在任何unix系统下 man nice,then you will know how to use it.
int main(int argc , char **argv)//参数的定义可参见任何一本C的教科书
{
int pid_1;
int pid_2;
if ( (pid_1 = fork()) == 0 )
{// run at NO.1 child process
printf("this is child 1 n" );
exit(0);
}
else if (pid_1 > 0)
{// father process
// then fork another child process
if((pid_2=fork())==0)
{// run at NO.2 child process
printf("this is child 1 n" );
exit(0);
}
else if(pid_2>0)
{
//father process
}
}
printf("this is father n" );
exit(0);
}
else exit(1);
}
父进程fork了两个子进程,但是没有做任何同步的控制,故可能达不到真正并行的效果。
#关于nice的调用,在任何unix系统下 man nice,then you will know how to use it.