实现c与shell间的双向通信

本文介绍了如何通过创建两个管道来实现C语言程序与Shell之间的双向通信。管道通常用于单向传递数据,而这里通过巧妙地利用两个管道,达到了数据在两者间双向流动的效果。
摘要由CSDN通过智能技术生成

实现c与shell间的双向通信

管道是应用较为广泛的进程间通信的手段,一般来讲,管道是单向的,一个进程负责向管道里写内容,另一个进程负责向管道里读内容。于是我利用了两个管道来实现双向通行。

在这里插入图片描述

  • 具体实现

    • c_conn_shell.h

      //
      // Created by fengjun on 18-9-22.
      //
      
      #ifndef STUDYNET_C_CONN_SHELL_H
      #define STUDYNET_C_CONN_SHELL_H
      
      #include <stdio.h>
      #include <stdlib.h>
      #include <unistd.h>
      #include <sys/wait.h>
      #include <errno.h>
      #include <fcntl.h>
      
      //存放读写通道句柄与子进程(shell程序)之间的关系
      static pid_t	*ccsChildpid = NULL;
      
      //shell命令的路经
      #define	CCS_SHELL "/bin/sh"
      //能存放的最大句柄数
      #define CCS_MAX_FD 100
      
      /**
       * @brief 执行shell命令,并返回shell程序的的读写句柄
       * @param cmdstring
       * @return 存有两个文件描述符的数组,第一个用于从shell进程读出数据,第二个用于向shell进程写入数据
       */
      int* c_conn_shell(const char *cmdstring);
      
      /**
       * @brief 关闭c与shell程序之间通信的通道
       * @param fd
       * @return 返回子进程终止时的状态
       */
      int c_conn_shell_close(int* fd);
      
      #endif //STUDYNET_C_CONN_SHELL_H
      
    • c_conn_shell.h

      //
      // Created by fengjun on 18-9-22.
      //
      
      #include "c_conn_shell.h"
      
      int* c_conn_shell(const char *cmdstring)
      {
             
          int		pfdRead[2],pfdWrite
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值