所以,我想在C语言中执行以下命令行:
ps -eo user,pid,ppid 2> log.txt | grep user 2>>log.txt | sort -nk2 > out.txt
但我完全不确定代码怎么可能会……我很困惑,我该如何将命令的输出写入文件,正确的和错误的输出……
此外,我不知道应该如何构建管道以及当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()
中使用返回)。 - jdarthenayperror
的字符串末尾不要加换行符。perror
将打印您的字符串,后跟一个冒号,如果该冒号从新行开始,它看起来很奇怪。 - William Pursellexecl
失败,那么在execl
后面的下一行才会被执行。 - cdarkeexecl
中的">fd_file"
将作为参数传递给sort
,它不会执行重定向操作 - 这是由 shell 完成的,而你没有运行 shell。 - cdarke