Моя домашняя работа - заставить это предложение команды работать в 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);
}