Как я могу написать код перенаправления, используя C в Lunux? - PullRequest
0 голосов
/ 28 октября 2019

Моя домашняя работа - заставить это предложение команды работать в Linux, используя C

"cat / etc / passwd | cut -d: -f 1> userlist.txt"

У меня былодля выполнения этой домашней работы использовались только функции dup2 (), execl (), mkfifo, pipe ().

Я мог бы выполнить

"cat / etc / passwd | cut -d: -f1 "

успешно.

pid_t pid;
int pipefd[2] = {0, };

if (pipe(pipefd) == -1) {
perror("pipe() error!");
return -1;
}

pid = fork();

if (pid == -1) {
    perror("fork() error!");
}
else if (pid == 0) { // Child
close(pipefd[0]);
dup2(pipefd[1], STDOUT_FILENO);
execl("/bin/cat", "cat", "/etc/passwd", NULL);
}
else { // Parent
close(pipefd[1]); // close unused write end
wait(&pid);
dup2(pipefd[0], STDIN_FILENO);
execl("/usr/bin/cut", "cut", "-d", ":", "-f", "1", NULL);
}
...