管道在c语言中的作用,在C中实现管道
我想在C中實現(xiàn)管道,例如 - $ ls | wc | wc
我寫了以下代碼 -
#include
#include
#include
void run_cmd(char *cmd, int* fd_in, int* fd_out)
{
int c = fork();
if (c==0)
{
if (fd_in != NULL)
{
close(fd_in[1]);
dup2(fd_in[0], 0);
}
if (fd_out != NULL)
{
close(fd_out[0]);
dup2(fd_out[1],1);
}
execlp(cmd, cmd, NULL);
}
}
int main(int argc, char **argv)
{
int fd_1[2], fd_2[2], i;
pipe(fd_1);
pipe(fd_2);
run_cmd(argv[1], NULL, fd_1);
for( i=2; i
{
if (i%2 == 0)
run_cmd(argv[i], fd_1, fd_2);
else
run_cmd(argv[i], fd_2, fd_1);
}
if (i%2 == 0)
run_cmd(argv[i], fd_1, NULL);
else
run_cmd(argv[i], fd_2, NULL);
}
這適用于兩個參數(shù),例如 - $./a.out ls wc
但是,當我嘗試使用兩個以上的參數(shù)時,它不起作用.
有人請告訴我我的代碼有什么問題,或者其他任何方式嗎?
總結(jié)
以上是生活随笔為你收集整理的管道在c语言中的作用,在C中实现管道的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux系统ll历史,Linux操作系
- 下一篇: 快车凌晨四点可以叫的到吗(快车linux