我是非常新的Linux等。我無法讓我的腳本工作。我只是猜測,程序在執行tr函數時被暫停。我的linux下c prog有什麼問題:「ls -al | tr a-z A-Z> file.txt」?
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
int main()
{
int pdesc[2];
pipe(pdesc);
int a = fork();
if (a == 0) // child
{
dup2(pdesc[1],1); // chaning std_out to pipes_out
execlp("ls", "ls", "-l", "-a", NULL);
}
else //parent
{
wait();
int file1 = open("file.txt", O_WRONLY|O_CREAT|O_TRUNC,0777);
dup2(pdesc[0], 0); // chaning std_in to pipes_in
dup2(file1, 1); // chaning std_out to file's stream
execlp("tr", "tr", "a-z", "A-Z", NULL);
}
return 0;
}
是這樣的:「參數列表必須以'NULL'指針終止,而且,由於這些是可變參數函數,所以必須將該指針**轉換爲**(char *)NULL'。 ? –
您的輸出文件不應該是可執行的;它是一個數據文件,而不是一個程序。我建議它不應該公開寫入,也可能不是可寫組,但這就是我的安全意識('umask'將最有可能修復它。 –