我遇到了让execl工作的问题。
pid_t pid = fork();
if(pid<0) {
perror("fork error\n");
} else if( pid== 0){
execl("/home/"user name"/opSys", "ps", ">>", "test.txt", (char*)NULL);
} else {
int returnStatus;
waitpid(pid, &returnStatus, 0);
}
我试图让它运行命令,然后输出到我的文本文件,但没有任何反应。我一直在谷歌搜索并尝试我找到的东西,比如不同的执行官。我试过execlp(),我试图让它使用ps ant而不是把它放到一个文件中。
如果已经回答,我很抱歉,我确信它有,但是我找不到适合我的解决方案。 提前致谢。
答案 0 :(得分:1)
我假设您的命令中的>>
应该创建输出的重定向。然而,这并非如此。在命令行上给出时,运算符>>
由 shell 解释;该命令只获取最多和排除它的参数。然后shell会注意文件描述符被正确地修改以进行重定向。
在您的情况下,该命令将获得三个参数,即给定的字符串ps
,>>
和test.txt
。这就像打字
command ps '>>' test.txt
你正在调用的命令可能不会那么做,可能会在stderr上给出一个关于它收到的错误参数的错误信息(你可能错过了)。
我建议您尝试调用shell来帮助您解释命令并将命令作为字符串传递:
execl("/bin/sh", "-c", "/home/"user name"/opSys ps >> test.txt",
(char*)NULL);