当前位置: 技术问答>linux和unix
Linux Shell 的小问题 (高分请教达人)
来源: 互联网 发布时间:2016-06-21
本文导语: 代码逻辑是:自己先pipe建立管道 然后fork一个子进程 把子进程的输入输出重定向到 pipe2端 然后就 execl("/bin/sh" "sh" (char*)0) 最后主进程通过获取自己的输入 然后通过管道传至子进程 子进程因为是bash 然后执行...
代码逻辑是:自己先pipe建立管道 然后fork一个子进程 把子进程的输入输出重定向到 pipe2端 然后就 execl("/bin/sh" "sh" (char*)0) 最后主进程通过获取自己的输入 然后通过管道传至子进程 子进程因为是bash 然后执行命令 把结果通过 通过管道返回给 主进程
遗憾的是只有第一次执行命令是正确的 然后就一直显示所输入的东西 并且第一次输入时间如果很长 它依然会显示所输入的东西 原因何在,请教高手?
遗憾的是只有第一次执行命令是正确的 然后就一直显示所输入的东西 并且第一次输入时间如果很长 它依然会显示所输入的东西 原因何在,请教高手?
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
int fds[2];
void do_shell();
void do_ioredirect();
void sig_chld(int signo)
{
printf("receive a SIGCHLDn");
return;
}
int main(int argc,char **argv)
{
char buf[256];
int maxfd,nread;
signal(SIGCHLD,sig_chld);
if(pipe(fds)