我正在编写一个简单的WINDOWS应用程序,演示管道,
我将字节大小的数据向下传递给子proc,递增该值并将char大小的数据发送回父级并循环,直到达到MAX_CHAR IPC几乎演示了“ i ++”。
父母程序
while(i<256){
bSuccess = WriteFile(g_hChildStd_IN_Wr, chBuf, sizeof(char), &dwWritten, NULL);
bSuccess = ReadFile(g_hChildStd_OUT_Rd, chBuf, sizeof(char), &dwRead, NULL); // IF THERE IS NO FFLUSH IT BLOCKS
}
在儿童中
while (i<256){
byte data=0;
fread(&data, sizeof(char), 1, stdout);
data++;
fwrite(&data, sizeof(char), 1, stdout);
//fflush(stdout); IF I DO NOT HAVE THIS PARENT BLOCKS ON READ
}
首先,如果我不FFLUSH child proc stdout,则父级会阻止读取child的stdout。
一个人如何可以运行此代码而不必使孩子的标准输出变得模糊。
在孩子的第一次写操作后关闭管道是不可行的,因为它处于循环中,需要执行256次。
更一般地说,我希望孩子将N个字节写给父对象,父母读取N个字节做某事,然后再将另一个N字节写回孩子,而孩子用该N个字节做某事并写入父N个字节。这发生了M次。
事情是我不能使用fflush,因为我的最终目标是使用一个不是由我实现的子进程。
我的最终目标是将数据通过管道传输到FFMPEG编码的数据并从标准输入中读取,并一遍又一遍地执行此操作,而不必为每个图像帧分派新的FFMPEG处理,而是分叉FFMPEG和管道的一个实例数据输入和从中读取数据。而且由于我没有实现ffmpeg,所以无法更改源代码。
谢谢
谢谢