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