设为首页 加入收藏

TOP

多进程编程(二十三)
2012-08-26 13:53:26 】 浏览:22941
Tags:进程 编程
;            char *string;
        说明:参数string指向一个字符串,格式如下:
             name=value
             本系统调用将环境变量name等于值value,修改或增加一个环境变
             量,字符串string成为环境的一部分.
        返回值:若putenv()不能取得合适的内存空间则返回非0值,否则返回0.
        例子:/*父进程处理*/
             putenv("HOME=/home/abcdef");
             putenv("PATH=/bin");
             if (fork()>0)
                 exit(0);   /*父进程退出运行*/
             /*子进程处理*/
             setpgrp();
             /*父进程设置的环境变量已传到子进程*/
             char * value1;
             value1=getenv("HOME");
             value2=getenv("PATH");
             printf("HOME=[%s],PATH=[%s]\n",value1,value2);
             /*将打印出"HOME=/home/abcdef"和"PATH=/bin"*/

三.多进程编程(www.cppentry.com)技巧
    1.主要程序结构
      (1)事件主控方式
          若是应用程序属于事务处理方式,则在主函数中设计为监控事件发生,
      当事件发生时,可以生成一个新的进程来处理该事务,事务处理完成后就
      可以让子进程退出系统.这种处理方式一般不要消息传递.
      (2)信息协调方式
          若是应用程序需要由多个进程协调处理完成,则可以生成这些进程,
      通过消息在进程间的传递,使各个进程能相互协调,共同完成事务.这种处
      理方式一般是用fork()生成几个进程后,用exec()调用其它程序文件,使
      得不同的程序同时在系统内运行.然后通过IPC机制传送消息,使各个程序
      能协调运行.
    2.选择主体分叉点
      (1)事件初始产生
         对应于事件主控方式的程序结构.关键点在于以何种方式选择事件的
      初始发生点,如网络程序给出的建链信息.主控程序在收到该消息后就认
      为是一个事件开始,则可以产生一个子进程处理后面的事务:接收交易信
      息,事务处理,发送返回交易信息,关闭链接等,完成后将子进程退出系统.
      (2)主程序自主产生
         对应于信息协调方式的程序结构.主控程序只负责生成几个子进程,各
      个子进程分别调用exec()将不同的执行文件调入内存运行,主控程序在生
      成所有的子进程后即可退出系统,将子进程留在内存中运行.
    3.进程间关系处理
      (1)父子进程关系
         . 进程组处理
           进程组的概念是这样的,当系统启动时,第一个进程是init,其进程
           组号等于进程号,由它产生的所有子进程的进程组号也相同,子进程
           的子进程也继承该进程组号,这样,由init所生成的所有子进程都属
           于同一个进程组.但是,同一个进程组的父子进程可能在信号上有相
           互通讯,若父进程先于子进程退出系统,则子进程会成为一个孤儿进
           程,可能变成僵死进程.从而使该子进程在其不"愿意"的情况下退出
           运行.为解决这个问题,子进程可以自己组成一个新的进程组,即调
           用setpgrp()与原进程组脱离关系,产生一个新的进程组,进程组号
           与它的进程号相同.这样,父进程退出运行后就不会影响子进程的当
           前运行.
         . 子进程信号处理
           但是,单做上述处理还不能解决另一个困难,即子进程在退出运行
           时,找不到其父进程(父进程已退出,子进程的父进程号改为1).发送
  &
首页 上一页 20 21 22 23 24 25 下一页 尾页 23/25/25
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Core Dump?! 下一篇字符串转换篇

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目