gpt4 book ai didi

c - 重定向到 execlp()

转载 作者:行者123 更新时间:2023-11-30 17:41:47 24 4
gpt4 key购买 nike

我在 execlp 方面遇到问题。当我不知道如何正确地将命令从指针数组重定向到 execlp 时。例如我想使用

ls -l | sort -n

我的程序只需要“ls”和“sort”

      int pfds[2];
pipe(pfds);
child_pid = fork();
if(child_pid==0)
{
close(1);
dup(pfds[1]);
close(pfds[0]);
execlp(*arg1, NULL);

}
else
{
wait(&child_status);
close(0);
dup(pfds[0]);
close(pfds[1]);
execlp(*arg2, NULL);
}

所有命令都在指针数组中,其中:ls -l 位于第一个表中,sort -n 位于第二个表中

最佳答案

您可能想使用 dup2 来重定向 stdin 和 stdout。另外,您没有正确使用 execlp。它期望以 NULL 指针终止的可变数量的参数。正如评论所建议的,等待命令不应存在。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main() {
int pfds[2];
pipe(pfds);
int child_pid;
child_pid = fork();
if(child_pid==0)
{
dup2(pfds[1], 1);
close(pfds[0]);
execlp("ls", "-al", NULL);

}
else
{
dup2(pfds[0], 0);
close(pfds[1]);
execlp("sort", "-n", NULL);
}
}

关于c - 重定向到 execlp(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21002558/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com