嵌入式学习第22天

1.进程的创建:
    32bit操作系统中,进程运行,操作系统开辟 0 - 4G虚拟内存空间
    虚拟内存空间分为:

    两个进程所占虚拟内存空间并不是 8 G,而是 4 G,两个进程分时共用同一空间
    两个进程物理内存空间是独立的,进程1和进程2空间独立

2.进程相关的函数接口:
    1.fork 
       pid_t fork(void);
       功能:
           创建一个子进程
       参数:
            void 缺省
       返回值:
           创建失败返回-1 
           成功父进程中返回创建的子进程的PID
           子进程中返回0 

        写时拷贝:fork创建子进程,子进程拷贝父进程中的数据,如果只是读取时不会为子进程单独生成空间,只有做写入操作时,才会
                 为子进程开辟独立空间,提高进程创建的效率

    2.getpid
      pid_t getpid(void);
      功能:
           获取进程的PID

    3.getppid  
      pid_t getppid(void);  
      功能:
           获得父进程的PID 
            2.exit
      void exit(int status);
      功能:
            进程结束 
      参数:
            status:进程结束的状态码
      返回值:
            缺省

      主函数中使用exit等价于return 

    3._exit 
       void _exit(int status);
       功能:
            立即结束进程任务

3.进程消亡:
    僵尸进程产生原因:
        1.子进程任务结束,空间没有被回收,该进程成为僵尸进程

    如何避免产生僵尸进程:
        1.让父进程先结束,子进程再结束,子进程不会变成僵尸进程
        2.子进程结束,父进程回收子进程空间,子进程不会变成僵尸进程
4.wait
    pid_t wait(int *wstatus);
    功能:
        等待子进程结束,回收子进程空间
    参数:
        wstatu s:存放子进程结束的状态码空间首地址
    返回值:
        成功返回子进程的PID
        失败返回-1

    注意:
        wait具有阻塞功能,如果子进程先结束,wait会不阻塞直接回收
        如果子进程没结束,wait会阻塞直到子进程结束回收子进程空间

     WIFEXITED(wstatus):判断子进程是否正常结束
     WEXITSTATUS(wstatus):获取子进程正常结束的状态码
     WIFSIGNALED(wstatus):判断子进程是否被信号打断结束
     WTERMSIG(wstatus):获取子进程被信号打断结束的状态码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值