pipe相关内容

多重管道实现使用系统调用fork()的execvp()等待()管道() - 它根本不工作

我需要实现我的shell能处理多种管道命令。例如,我需要能够处理这个问题: LS |用grep -i cs340 |排序| uniq的|切〜5 。我假设的问题是,我没有通过previous命令的输出到下一个命令的输入。 当我执行我的code,它给了我没有输出。我使用这种伪code: 在CMDS CMD 如果存在下一CMD 管(new_fds) 叉子 如果 ..
发布时间:2016-08-18 15:17:33 C/C++

实现在C流水线。什么是做到这一点的最好办法? (自己的Linux壳)

我想不出任何方法来实现在C,将实际工作流水线。这就是为什么我决定在这里写英寸我不得不说,我知道该怎么办管/叉/ mkfifo子的工作。我见过实施2-3管道的大量例子。这很容易。我的问题开始,当我已经有了实现的外壳,和管道数是未知的。 我现在得: 例如: LS -al | TR A-Z A-Z | TR A-Z A-Z | TR A-Z A-Z 我这样的转换线进入这样的事情:数组[0] ..
发布时间:2016-08-18 14:59:42 服务器开发

Win32中,ReadFile的从管块即使孩子终止

我有一个简单的程序(C语言)的创建两个子进程,等待每一个继承管,并把输出的文件。 一切都在两个管道,当孩子结束后,调用ReadFile的块,等待在管道上的一些数据读/写周期之后效果很好,除了。我用的是以下模式: ... //创建PIPE1 CreatePipe(安培; hReadDup,&放大器; HWRITE,&放大器; saAttr,0); DuplicateHandle(GetCurr ..
发布时间:2016-08-18 14:48:57 C/C++

在Linux下如何管工作?

可能是一个简单的问题,但... 如何管工作?如果我运行通过CLI程序并重定向输出到一个文件,我将能够在该文件到另一个程序管,因为它正在写的? 基本上当一行被写入文件,我想它要立即输送到我的第二个应用程序(我试图动态绘制图形关闭现有的程序)。如果管道完成移动到下一个命令之前第一个命令只是不确定。 任何反馈会大大AP preciated! 解决方案 如果你想一个程序的输出重定向到另一个的 ..
发布时间:2016-08-18 14:12:58 服务器开发

使用管道通过父母和孩子之间的整数值

我对如何正确使用管道()来传递两个进程之间的整数值有点糊涂了。 在我的节目,我先创建一个管道,然后我叉它。我认为我有“二”管呢? 据我了解,这是我的任务。 我的父母经过一个for循环检查的整数值的“i”一定的操作,增加一个计数变量,并保存价值到一个数组。每次检查后,我的父母应该通过管道传递一个整数值,“我”我的孩子。我的孩子然后使用该整数值,确实对一些值检查,应增加一个计数变量,并将结果保存 ..
发布时间:2016-08-18 13:56:34 C/C++

用popen非阻塞管?

我想用开管 的popen() 并有无阻塞“读”访问。 我怎样才能做到这一点? (我发现的例子是所有阻塞/同步) 解决方案 设置是这样的: FILE * F =的popen(“./输出”,“R”); INT D =的fileno(F); 的fcntl(D,F_SETFL,O_NONBLOCK); 现在你可以阅读: ssize_t供R = READ(D,BUF,计数); 如果(R ..
发布时间:2016-08-18 13:55:00 服务器开发

Linux管道输入和输出

我愿做一个Linux操作系统在C程序中以下内容: 创建使用系统调用管道(或2) 使用EXEC执行一个新的进程() 进程的标准输入连接到previously创建的管道。 进程的输出连接到另一个管道。 我们的想法是,以规避性能目的的驱动器访问。 我知道管道的建立是非常简单的管道系统调用 而且,我可以只使用popen这为输入或输出目的建立一个管道。 但你会如何去这样做的输入和输出 ..
发布时间:2016-08-18 13:30:20 服务器开发

管道实现

我想实现一个支持管道Linux外壳。我已经做了简单的指令,在后台,重定向命令运行,但管道至今下落不明。 我已经读到它,看到code的一些片段,但还是没能理清工作解决方案。 我到目前为止有: INT FD [2];管(FD);将为pid_t PID =叉();如果(PID == -1) 返回-1;如果(PID == 0) { 关闭(FD [1]); //关闭写管道,在孩子 ..
发布时间:2016-08-18 13:26:29 服务器开发

UNIX管道子进程之间

我想编写一个程序,将产生子进程和管道之间,类似的命令行管道任意数量。就我而言,我试图做的“ls -l命令|更多。”并输出到标准输出,然后让父母继续执行多个命令 我有以下的code作为一个小例子: INT主(INT ARGC,为const char * argv的[]){ INT FD [2]; 管(FD); CHDIR(“/目录/用/文件/手/”); //创建更 ..
发布时间:2016-08-18 13:20:25 C/C++

用C多个管道的实施

我想实现我在C.外壳多个管道,我发现这个教程的网站和我做的功能是基于这个例子。这里的功能 无效executePipes(CMDLINE *命令,字符* userInput){ INT numPipes = 2 * countPipes(userInput); INT状态; INT I = 0,J = 0; INT pipefds [numPipes] 对于( ..
发布时间:2016-08-18 13:09:40 服务器开发

绕过子输出缓冲在C或Python的popen

我有关于popen这一个一般性的问题(和所有相关的功能),适用于所有操作系统,当我写一个python脚本或一些C code和从控制台运行生成的可执行文件(赢或Linux)我可以马上看到从过程的输出。但是,如果我运行相同的可执行文件与标准输出一个分叉过程重定向到一个管道,输出缓冲器的地方,一般可达4096字节之前它被写入到管道所在的父进程可以读取它。 下面的python脚本将产生1024字节的块输 ..
发布时间:2016-08-17 23:17:32 Python

有叉))用C麻烦(,管(),dup2(和exec()

下面是我的code: 的#include<&stdio.h中GT; #包括LT&;&stdlib.h中GT; #包括LT&;&unistd.h中GT; #包括LT&;&wait.h GT; #包括LT&;的readline / readline.h>#定义NUMPIPES 2INT主(INT ARGC,CHAR *的argv []){ 字符* bBuffer,*特征码,* A ..
发布时间:2016-08-17 22:42:55 C/C++

管道缓冲区大小为4K或64K?

我在多个地方读到一管默认的缓冲区大小为4KB(例如,这里)和我的的ulimit -a 倾向于确认语句: $的ulimit -a 核心转储文件大小(块,-c)0 数据赛格大小(千字节,-d)无限 调度优先级(-e)0 文件大小(块,-f)无限 挂起信号(-i)15923 最大锁定内存(千字节,-l)64 最大内存大小(千字节,-m)无限 打开文件(-n)1024 管道尺寸(512字节,-p)8 ..
发布时间:2016-08-17 22:39:26 服务器开发

是否有可能通过具有相同的父创建了两个子进程之间的管道(LINUX,POSIX)

我有多个子“分叉”受同一母公司和我试图建立所有这些子进程就像一个链表结构之间的管道连接。儿童1发送数据的child2,儿童2儿童3 ....孩子N至1.子女是否有做任何正确的方法? 另外,如果我创建和流程我如何强制父“等待”的所有过程,因为来完成他们的工作等待()之间进行通信或 waitpid函数()等待第一个完成的过程,但我需要等待他们。这是另外一个问题,即出现了。 谢谢... 解决方 ..
发布时间:2016-08-17 22:29:53 服务器开发

可以popen()完成建立双向管道像管()+ fork()的?

我在实现C ++模拟文件系统(带主要是C)上的管道。它需要在主机shell中运行命令,但模拟的文件系统上执行的管道本身。 我可以用管道实现这一目标(),叉()和系统()系统调用,但我preFER使用的popen()(它处理创建一个管道,派生进程,并传递到shell命令)。这未必是可能的,因为(我想)我需要能够从管道,在子处理结束阅读的父进程写,写输出从子后面,最后读取从父该输出。该手册页的pop ..
发布时间:2016-08-17 21:48:33 C/C++

连接N个命令在一个shell管道?

我想实现我C.可以执行简单的指令只是一个简单的execvp(罚款),但要求之一就是管理这样的命令的shell:“ls -l命令|头|尾-4”与一个for循环,只有一个人管()'语句重定向stdin和stdout。现在天后我有点失落。 N =简单命令的数量(本例中3:LS,头,尾) 命令=与结构的命令的列表,像这样的: 命令[0] .argv [0]:LS 命令[0] .argv [1]:-l ..
发布时间:2016-08-17 20:52:01 C/C++

如果检测标准输入是C / C ++ / Qt的一个终端或管道?

当我执行“蟒蛇”由不带参数的终端它带来了Python的交互式shell。 当我执行“猫|蟒蛇”从终端没有启动交互模式。不知何故,没有得到任何输入时,它已检测到它被连接到管道 我怎么会做类似的检测用C或C ++或Qt的? 解决方案 使用 isatty : 的#include<&stdio.h中GT; #包括LT&;&io.h GT; ... 如果(isatty(的fileno(标 ..
发布时间:2016-08-17 20:43:48 C/C++开发

çMinishell添加管道

所以我做一个UNIX minishell,并正尝试添加管道,所以我可以做这样的事情: 的ps aux | grep的DH | grep的-v grep的|切-c1-5 不过我在遇到麻烦缠绕我的头周围的管路部分。我更换所有的“|”与0个字符,然后运行每一行作为法线。不过,我试图转移输出和输入。一个命令的输入需要是previous命令的输出,以及一个命令的输出必须是下一个命令的输入。 我这样做使 ..
发布时间:2016-08-17 20:41:36 服务器开发

如何发送使用管道两个程序之间的简单字符串?

我试着在网上搜索,但也有几乎没有任何资源。一个小例子就足够了。 编辑 我的意思是,互相通信两个不同的C程序。一个程序应该送“喜”,另一个应该接受它。类似的东西。 解决方案 一个普通管只能连接两个相关的过程。它是由一个进程创建并在最后一个进程关闭它会消失。 一个的命名管道 ,也称为FIFO为它的行为,可以用于连接两个不相关的进程和独立的处理的存在;这意味着它可以即使没有人在使用它存在。 ..
发布时间:2016-08-17 20:30:05 服务器开发