Bash 编写unix shell
我需要帮助写一个shell。我目前正在创建管道,并生成相关的子进程来读取和写入管道。似乎不起作用的部分是父进程和子进程之间的通信。我需要帮忙。首先,如果您能解释一下这是如何工作的(Stdin和Stdout也是如此),并帮助我剖析我所拥有的,以帮助我理解我所缺少的东西,我将不胜感激 总体情况如下:Bash 编写unix shell,bash,process,pipe,Bash,Process,Pipe,我需要帮助写一个shell。我目前正在创建管道,并生成相关的子进程来读取和写入管道。似乎不起作用的部分是父进程和子进程之间的通信。我需要帮忙。首先,如果您能解释一下这是如何工作的(Stdin和Stdout也是如此),并帮助我剖析我所拥有的,以帮助我理解我所缺少的东西,我将不胜感激 总体情况如下: 您需要创建管道,例如使用管道(2)。对管道的调用返回一个文件描述符,该描述符必须存储在变量中 调用fork(2),它将复制当前进程,包括打开的文件和文件描述符 两个进程都使用dup2(2)重定向标准输入
int in,out,err,child;
in = pipe(); out = pipe(); err = pipe();
child = fork();
if ( child == 0 ) {
dup2( in, STDIN );
dup2( out, STDOUT );
dup2( err, STDERR );
execve(something);
} else {
/* read from out and err and write into in as necessary. */
}
谢谢你告诉我们,但是问题是什么呢?你能提供一个不工作的例子吗?也就是说,你的代码的一部分失败了。C和C++与此无关。<代码> MKFIFO(3)< /Cord>创建命名管道。这是没有必要的。使用
pipe(2)
创建匿名管道。哦,对了,谢谢。编辑那个。