易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux中fork()如何实现父子进程不同的返回值

        网上关于fork()文章都说fork()来创建子进程,利用返回值的不同来执行不同的代吗段.但都没有说到如何实现不同的返回值.下面我将和你来说说这个问題:
        考虑如下代码:
        int    i   =    fork();
        if ( i  )
        {
        ......
        }
        else
        {
        ........
        }
        .......
        当父进程执行到这一句时:int   i = fork(),就创建了一个新的进程,新的进程有自己的堆栈段和代码段,但是和父进程共享代码段.最需要主意的是,
子进程的上下文也和父进程相同,这就是说,此时,父进程的 PC指向int   i   =  fork(),子进程的 PC也指向int     i  =  fork().但是,谁都知道,当前PC指向的这个语句是涵数调用,即然是涵数调用,就有返回值,返回值放在哪里呢?就是放在进程的各自堆栈中.所以在父进程调用fork()时,fork()涵数在父进程的堆栈中写入子进程的进程ID,而又在刚刚创建的子进程的堆栈中写入0.fork()涵数调用结束后,因为有新的进程,所以系统要重新调度,就在这一刻,父子进程的PC指向fork()涵数返回处,如果父进程得到运行,则父进程从自己的堆栈中得到的返回值是子进程的ID,从而   i  =  ID;如果子进程得到运行,则子进程从自己的堆栈中得到的返回值是0,即  i   =  0.
     
又考虑以下代码:
      int    i  =  fork();
          .......
      int    j   = fork();
          


相关文档:

Linux串口通信程序

    毕业设计用到一些接口测试代码,其中就有串口的测试,这其中基本借鉴了华清远见那本书里面的代码,读串口程序交叉编译到开发板中,写串口程序在PC端执行。代码很简单,因为串口在linux下也只是个文件,只需要打开这文件进行读写操作就好了。其中使用了2个函数,分别是配置端口和打开端口的函数,这2个函 ......

linux配置java环境变量(详细)

现在用linux的朋友越来越多了,前几天就有两个朋友问我linux下怎么配置java环境,我想还有很多朋友想了解学习这方面的东西,就写一个完全一点的linux java环境配置吧,希望对大家有帮助。
一. 下载jdk5.0 for linux
  到sun的主页 http://java.sun.com/j2se/1.5.0/download.jsp 下载jdk安装文件jdk-1_5_0_05-linux-i586 ......

Why do We Choose Linux?

Linux, named after the inventor, Linus Torvalds, is a so different OS for everyone against Windows. To everyone who used to use Windows, Linux need us to do more for everything which we usually do by computer, such as playing a video.
Someone says, Linux is for the ones who are good at the computer ......

Linux 初接触

1. 装系统
我装的双系统,Windows 7 和 Fedora 12.
1)我的C盘有50GB,所以我先分了区,分成3个,1个30GB,1个15GB,剩下的一个区3GB。
2)先装Windows 7在30GB的分区。
     P:Sony的型号VGN-NR120E很变态,安装的时候必须要用最新补丁的安装盘才可以驱动到硬盘(导致不能装XP),可能是HDD ......

Linux下获取MAC地址

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <net/if.h>
#include <netinet/if_ether.h>
#include <string.h>
#include <netinet/ether.h>
#include<unistd.h>
int main(i ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号