Linux中管道的c实现
我正在执行以下命令Linux中管道的c实现,c,pipe,C,Pipe,我正在执行以下命令 ls | grep“某物” 用c语言编程。谁能帮我一下吗 我想要fork一个子对象,在那里我将使用execlp运行ls命令。 在父级中,我得到子级和grep的输出(再次使用execlp) 不可能吗?管道只是从一个标准输出读取,然后写入另一个标准输出。 是否要实现具有管道功能的shell解释器? 首先,您需要一个shell解析器来解析commond。 然后,您将拥有管线功能。 …管道只是从一个标准输出读取,然后写入另一个标准输出。 是否要实现具有管道功能的shell解释器? 首
ls | grep“某物”
用c语言编程。谁能帮我一下吗
我想要fork一个子对象,在那里我将使用execlp运行ls命令。
在父级中,我得到子级和grep的输出(再次使用execlp)
不可能吗?管道只是从一个标准输出读取,然后写入另一个标准输出。
是否要实现具有管道功能的shell解释器?
首先,您需要一个shell解析器来解析commond。
然后,您将拥有管线功能。
…管道只是从一个标准输出读取,然后写入另一个标准输出。
是否要实现具有管道功能的shell解释器?
首先,您需要一个shell解析器来解析commond。
然后,您将拥有管线功能。
我终于找到了它的代码
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(void)
{
int pfds[2];
pipe(pfds);
if (!fork()) {
close(1); /* close normal stdout */
dup(pfds[1]); /* make stdout same as pfds[1] */
close(pfds[0]); /* we don't need this */
execlp("ls", "ls", NULL);
} else {
close(0); /* close normal stdin */
dup(pfds[0]); /* make stdin same as pfds[0] */
close(pfds[1]); /* we don't need this */
execlp("grep", "SOMETHING", NULL);
}
return 0;
}
#包括
#包括
#包括
内部主(空)
{
int-pfds[2];
管道(pfds);
如果(!fork()){
关闭(1);/*关闭正常标准输出*/
dup(pfds[1]);/*使标准输出与pfds[1]相同*/
关闭(pfds[0]);/*我们不需要这个*/
execlp(“ls”、“ls”、NULL);
}否则{
关闭(0);/*关闭正常标准*/
dup(pfds[0]);/*使标准DIN与pfds[0]相同*/
关闭(pfds[1]);/*我们不需要这个*/
execlp(“grep”,“SOMETHING”,NULL);
}
返回0;
}
我终于找到了它的代码
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(void)
{
int pfds[2];
pipe(pfds);
if (!fork()) {
close(1); /* close normal stdout */
dup(pfds[1]); /* make stdout same as pfds[1] */
close(pfds[0]); /* we don't need this */
execlp("ls", "ls", NULL);
} else {
close(0); /* close normal stdin */
dup(pfds[0]); /* make stdin same as pfds[0] */
close(pfds[1]); /* we don't need this */
execlp("grep", "SOMETHING", NULL);
}
return 0;
}
#包括
#包括
#包括
内部主(空)
{
int-pfds[2];
管道(pfds);
如果(!fork()){
关闭(1);/*关闭正常标准输出*/
dup(pfds[1]);/*使标准输出与pfds[1]相同*/
关闭(pfds[0]);/*我们不需要这个*/
execlp(“ls”、“ls”、NULL);
}否则{
关闭(0);/*关闭正常标准*/
dup(pfds[0]);/*使标准DIN与pfds[0]相同*/
关闭(pfds[1]);/*我们不需要这个*/
execlp(“grep”,“SOMETHING”,NULL);
}
返回0;
}
您需要什么帮助?你尝试了什么?系统(“ls | grep”SOMETHING“)代码>?您能更详细地说明您需要什么帮助吗?你尝试了什么?系统(“ls | grep”SOMETHING“)代码>?你能更具体一点吗?不,我不想实现shell解释器。使用execlp,我想执行ls并将其传输到grep,grep也使用execlp运行。为什么不作为单个命令运行呢?这有点复杂。不过,popen是获取shell命令输出的最佳选择。不,我不想实现shell解释器。使用execlp,我想执行ls并将其传输到grep,grep也使用execlp运行。为什么不作为单个命令运行呢?这有点复杂。不过,popen是获取shell命令输出的最佳选择。