我写了一个c ++代码来实现父处理器和子处理器之间的双向管道。 一切都很完美我只需要增加缓冲区的大小(管道的输出)。我知道有很多帖子使用malloc来处理char的大小,但我认为我的问题有点具体,因为它需要以下内容:
以下是我的代码片段:
#define PARENT_READ readpipe[0]
#define CHILD_WRITE readpipe[1]
#define CHILD_READ writepipe[0]
#define PARENT_WRITE writepipe[1]
int writepipe[2] = {-1,-1};// parent -> child
int readpipe[2] = {-1,-1};//child -> parent
pid_t childpid;
string pipeInput;
const char * c;
**char buffer [1000000]; //1 MB for now ..**
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 import_modify_graph.py");
close(CHILD_READ);
close(CHILD_WRITE);
}
else
{
close(CHILD_READ);
close(CHILD_WRITE);
pipeInput="SOME INPUT";
c=pipeInput.c_str();
write(PARENT_WRITE,c,strlen(c));
close(PARENT_WRITE);
**read(PARENT_READ,buffer,1000000);**
答案 0 :(得分:0)
假设你在Linux下,你可以使用:
fcntl(pipe_fd, F_SETPIPE_SZ, size);