0
我寫了這個簡單的程序。我想將它的輸出記錄到test.log中,如下所示。我能做到這一點嗎?如何記錄execve調用的輸出?
int main(int argc, char **argv)
{
int fd = open("test.log", O_CREAT|O_WRONLY);
char *path[2];
path[0] = "/bin/ls";
path[1] = NULL;
execve((char *)&path[0], &path, NULL);
close(fd);
return 0;
}
您可以在您的命令中使用管道運算符,並將管道標準輸入或標準輸出傳送到文件或其他管道,您可以使用子進程讀取。您可以將輸出管道輸出到您在執行execve之前創建的管道,並使用子進程讀取它。 – 2014-12-07 21:16:49
您需要製作fd 1(也可能是fd 2,如果您還想捕獲錯誤輸出),請參閱您的文件。參見'dup2()'。 – celtschk 2014-12-07 21:20:39
你能舉個例子嗎?我之前一直在研究它,但我無法很好地理解手冊頁。 – CaseyJones 2014-12-07 22:12:55