网络安全参考 | UNIX参考 | GPS参考 | 无线参考 | 在线手册 | OSBUG.ORG | SUNNY-NETWORK.COM
天线制作 GPS 地标
网站地图 RSS订阅
高级搜索 收藏本站
Home | 业界动态 | Open source | GNU | Linux | BSD | Solaris | AIX | HP-UX | IRIX | Mac OS X | Minix | Tru64 | SCO UNIX | Network | Security | X-Window | Database | 应用服务 | Programming | 经典著作 | 永远的纪念 | 杂项
 当前位置: Home > Linux > 程序设计 > 进程间通讯 > 文章  
Linux环境进程间通信: 管道及有名管道
文章来源: IBM Developerworks 文章作者: 郑彦兴 发布时间: 2002-12-11   字体: [ ]  
 

  实例二:用于具有亲缘关系的进程间通信

  下面例子给出了管道的具体应用,父进程通过管道发送一些命令给子进程,子进程解析命令,并根据命令作相应处理。

#include <unistd.h>
#include <sys/types.h>
 
main()
{
  int pipe_fd[2];
  pid_t pid;
  char r_buf[4];
  char** w_buf[256];
  int childexit=0;
  int i;
  int cmd;
 
  memset(r_buf,0,sizeof(r_buf));
 
  if(pipe(pipe_fd)<0)
  {
    printf("pipe create error\n");
    return -1;
  }
 
  if((pid=fork())==0)
    //子进程:解析从管道中获取的命令,并作相应的处理
  {
    printf("\n");
    close(pipe_fd[1]);
    sleep(2);
   
    while(!childexit)
    {
      read(pipe_fd[0],r_buf,4);
      cmd=atoi(r_buf);
      if(cmd==0)
      {
        printf("child: receive command from parent over\n now child process exit\n");
        childexit=1;
      }
     
      else if(handle_cmd(cmd)!=0)
        return;
      sleep(1);
    }
    close(pipe_fd[0]);
    exit();
  }
  else if(pid>0)
    //parent: send commands to child
  {
    close(pipe_fd[0]);
    w_buf[0]="003";
    w_buf[1]="005";
    w_buf[2]="777";
    w_buf[3]="000";
    for(i=0;i<4;i++)
      write(pipe_fd[1],w_buf[i],4);
 
推荐文章
·Linux环境进程间通信(二): 信号(
·深刻理解Linux进程间通信(IPC)
 
 
↑返回顶部   打印本页   关闭窗口↓  

Google
 
Web oldhand.org unixreference.net meshmea.org
相关分类
热点文章
·Linux环境进程间通信(二
·深刻理解Linux进程间通
相关文章
·深刻理解Linux进程间通
·Linux环境进程间通信(二
更多...
 
 

Copyright(c) 2001-2009 OLDHAND ORGANIZATION, All Rights reserved.
Power by DedeCms 织梦内容管理系统