我正试图和父母一起打开一个文件,然后把它发送给孩子。我希望子程序查找特定的单词,并将文本文件中的行发送回父文件。
现在使用我的代码,我可以将文本文件发送给孩子,但我不能检查该文件并将其发送回父程序。
int fd[2];
pid_t cpid;
pipe(fd);
if ((cpid = fork()) == -1)
{
cout << "ERROR" << endl;
exit(1);
}
// child process
if (cpid == 0)
{
// don't need the write-side o
我目前有一个基于mfc的对话框应用程序和一个控制台应用程序,这两个应用程序都是在visual studio 2010中创建的(目前它们是分开的)。我想知道如何将这两个解决方案组合在一起,这样我就可以从对话框应用程序中读取用户输入,并将其用于基于控制台的应用程序。一旦用户单击对话框GUI上的"ok“,基于控制台的应用程序应该会出现,其中的信息取决于用户的输入。任何示例代码都将非常受欢迎。谢谢!
是否可以使用一个管道同时用于进程之间的写入和读取?我的伪代码很像下面的代码。我试过了,但它给我一个错误,说“错误的文件描述符”。
create fd[2]
create pipe(fd)
parent:
close fd[0]
write something to fd[1]
close fd[1]
// wait for child's signal
close fd[1]
read the response fd[0]
close fd[0]
child:
close fd[1]
read
我有一个while循环,它通过将子进程的stdout重定向到父进程,从而使用阻塞I/O从子进程读取数据。通常,子进程一退出,在这种情况下阻塞的read()就会返回,因为被读取的管道由子进程关闭。
现在,我有一种情况,即对于已完成的子进程,read()调用不会退出。子进程以僵尸状态结束,因为操作系统正在等待我的代码获得它,但是我的代码却阻塞了read()调用。
子进程本身在挂起时没有运行任何子进程,我在查看/proc/<child process PID>/fd时没有看到列出的任何文件描述符。然而,子进程确实分出了两个守护进程,其目的似乎是监视子进程(子进程是一个专有的应用程序,我没
我正在阅读管道函数的文档,我遇到过这样的情况
pipe() creates a pipe, a unidirectional data channel that can be used for interprocess communication
但它返回两个文件描述符。一个用来读,一个用来写。我遗漏了什么?
我正在编写一个simpel程序,它基本可以执行两个linux命令所能完成的任务。例如,ls -l | grep vars.sh,这可以在Linux控制台上完成。我需要用C语言编写一个同样的程序。我想我已经让它正常工作了,但是我想知道我是否在做这个仪式,我是否可以对我的代码做一些修改。
这是我的代码:
#include <stdio.h> // Voor verschillende I/O's, macro's, declaraties.
#include <stdlib.h> // Om de system call te activeren.
#inc