我一直在找主管工作有问题。
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,而不是把它放到一个文件中。
如果这个问题得到了回答,我真的很抱歉,但是我不能找到一个对我有用的解决方案。提前谢谢。
发布于 2017-02-14 22:44:53
我假设命令中的>>应该创建输出的重定向。然而,这里的情况并非如此。当在命令行上给定时,操作符>>将由shell解释;该命令只获取到和排除它的参数。然后,shell会注意文件描述符在重定向过程中被正确破坏。
在您的示例中,该命令将获得三个参数,即给定的字符串ps、>>和test.txt。这就像打字一样
command ps '>>' test.txt您正在调用的命令可能执行得不多,可能会在stderr上给出一个错误消息,说明它收到的错误参数(您可能漏掉了)。
我建议您尝试调用shell以帮助您解释命令并将命令传递为字符串:
execl("/bin/sh", "-c", "/home/"user name"/opSys ps >> test.txt",
(char*)NULL);https://stackoverflow.com/questions/42237499
复制相似问题