实现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
-