当前位置:  技术问答>linux和unix

求教fork

    来源: 互联网  发布时间:2016-07-10

    本文导语:  #include  #include  #include  #include  int main(void) { pid_t result; result = fork(); if(result == -1) { perror("fork"); exit; } else if(result == 0) { printf("The return value is %dn In child process!!n My PID is %dn",result,getpid()); } else...

#include 
#include 
#include 
#include 

int main(void)
{
pid_t result;
result = fork();
if(result == -1)
{
perror("fork");
exit;
}
else if(result == 0)
{
printf("The return value is %dn In child process!!n My PID is %dn",result,getpid());
}
else
{
printf("The return value is %dn In father process!!n My PID is %dn",result,getpid());
}
}

运行结果为什么是
The return value is 0
In child process!!
My PID is  2280

The return value is  2280
In father process!!
My PID is  2879

我看了fork的返回值等内容,还是不明白,帮忙解释一下,谢谢~~



|
1、在父进程里面调用fork()以后,会创建一个子进程,这样就会有两个进城了,对吧?

2、从fork()那个点开始,父子进程就要区分了,区分的方法就是,子进程里面fork()返回0;父进程里面返回子

进程的ID。之所以这样设计是因为,任何一个进程都可以调用getpid()得到自己的ID,而父进程要得到子进程的

ID,就只能靠fork()的返回值了。

3、由2之,在fork()后的代码只要简单判断fork()的返回值,就可以区分出来两条路径了,一种是父进程继续运

行的路径,一条是子进程运行的路径

|



补充一下:当程序顺序执行到fork指令时,操作系统会产生一个新进程(原进程的子进程),这时,父子进程是相互独立的,各自完成各自的任务,互不干扰。就好像细胞分裂一样。

|
"if(result == 0)
{
printf("The return value is %dn In child process!!n My PID is %dn",result,getpid());
} "——这就是子进程做的工作

“else
{
printf("The return value is %dn In father process!!n My PID is %dn",result,getpid());
}”——这是父进程所作的工作。

|
都走,但是因为fork返回值result是不同的,所以它们不会走相同的路径

|


这个貌似已经说的很清楚了

|
fork就是产生子进程,产生成功返回子进程id,返回失败的话返回-1,而子进程id在父进程中显示为一个数字,在子进程中为0而已,好了吧,简直就是英文翻译

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求教求教,shell问题...各位大哥,帮忙下
  • 400分求教: 求教一简单问题,现场给分
  • 高分求教:如何将JAVA文件(.class)制作成可执行文件(.exe),求教方法或工具推荐
  • 急!!求教linux命令的使用:统计出/bin目录中文件的个数,追加到文件filea的结尾
  • 求教:在UNIX中查找包含指定文字的文件名
  • 小白菜求教linux大鸟
  • JDK1.3.1初级问题求教
  • 初学者有问题求教!
  • 各路高手请进!高分求教,非常着急!
  • 高分求教的问题(关于SendMail设置)
  • 简单问题:从sun网站上当了个jdk1.4b3,bin后缀,求教怎么安装
  • 求教:知道当前时间,如何得到N天前的时间 ?
  • 求教:switch(condition)中的condition 必须为整型吗?
  • Linux远程访问的问题,高分求教:)
  • 求教:在Linux下如何做代理服务器?
  • 紧急求教!究竟Java里面有没有相当于C++的CPOINT的类阿?
  • 求教JAVA中XML解析问题
  • 50分求教,在JSP里如何将String转换成Double
  • 我刚装好,是不是需要配制环境变量?求教。
  • 400分求教JAVA皮肤的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3