我将从简要解释我的程序开始,然后我将转到我的问题.我创建了一个执行以下操作的双向管道:
父进程将字符串值传递给子进程(在我的程序中,字符串值为"TEST DATA")
子进程从其父进程读取传递的数据,并执行一个简单地将两个字符串连接在一起的python文件(从父进程"TEST DATA"接收的字符串和"CHILD PROCESS:")
附加的字符串被发送回父进程,只是将它们打印出来.
执行此程序后,输出将如下所示:
父进程:子进程:测试数据
这些是我的C++和python程序代码:
test.cc:
#include#include #include #include #include int main() { int writepipe[2] = {-1,-1};// parent -> child int readpipe[2] = {-1,-1};//child -> parent pid_t childpid; if(pipe(readpipe) < 0 || pipe(writepipe) < 0) { //cannot create a pipe printf("error creating pipe"); exit(-1); } #define PARENT_READ readpipe[0] #define CHILD_WRITE readpipe[1] #define CHILD_READ writepipe[0] #define PARENT_WRITE writepipe[1] if((childpid=fork())<0) { //cannot fork child printf("cannot fork child"); exit(-1); } else if (childpid==0) {//child process close(PARENT_WRITE); close(PARENT_READ); dup2(CHILD_READ,0); //read data from pipe instead of stdin dup2(CHILD_WRITE , 1);//write data to pipe instead of stdout system("python test.py"); close(CHILD_READ); close(CHILD_WRITE); } else { close(CHILD_READ); close(CHILD_WRITE); //do parent stuff write(PARENT_WRITE,"TEST DATA\n",23); int count; char buffer [40]; count=read(PARENT_READ,buffer,40); printf("parent process: %s",buffer); } return 0; }
test.py:
import sys data=sys.stdin.readline() sys.stdout.write("CHILD PROCESS: "+data)
我的问题是: 我有一个文本文件(让我们称之为test.txt),其中包含几行数据,我希望能够使用前面的代码但不是发送一个字符串值(TEST DATA)我想发送整个文本文件的内容..任何提示?