Таким образом, я хотел бы сделать следующую командную строку в C:Как труба в C
ps -eo user,pid,ppid 2> log.txt | grep user 2>>log.txt | sort -nk2 > out.txt
Но я не уверен, как, вообще, как может быть код ... I «Я запутался в том, как мне нужно записать вывод команды в файл, правильный и вывод ошибки ...
Кроме того, я понятия не имею, как я должен структурировать трубопровод и что делать, когда pid == -1 или когда pid> 0 ...
Мой код:
int main(){
int fd0[2], fd1[2], pid0, pid1;
pipe(fd0);
pid0 = fork();
if (pid == 0){
close(1);
dup(fd0[0]);
fd_file= open(“./out.txt”, O_WRONLY | O_CREAT | O_TRUNC, 00600);
execl("sort","-nk2",">fd_file");
pipe(fd1);
pid1 = fork();
if (pid1 == 0){
close(1);
dup(fd1[0]);
...?
}
}
else if (pid == -1){
perror("ERROR AT SORT!\n");
exit(1);
}
return 0;
}
Для обработки ошибок лучше всего, вероятно, выйти (с возвратом в 'main()' или 'exit()'). – jdarthenay
Не помещайте новую строку в конце строки, переданной 'perror'. 'perror' будет печатать вашу строку, за которой следует': ', и выглядит странно, если этот двоеточие начинается с новой строки. –
Следующая строка после 'execl' будет выполняться только в случае сбоя' execl'. – cdarke