This question already has answers here:
Redirecting exec output to a buffer or file
(5个答案)
3年前关闭。
我遇到了使execl无法正常工作的问题。
我试图让它运行命令,然后输出到我的文本文件,但是什么也没发生。我一直在谷歌搜索并尝试找到的东西,例如不同的执行人员。我试过execlp(),我试着只是使其使用ps ant而不是将其放入文件中。
如果确实已经回答了,我对此表示歉意,但是我找不到适合我的解决方案。
提前致谢。
这样,您正在调用的命令可能并不会执行太多操作,可能会在stderr上给出一条错误消息,告知它接收到的错误参数(您可能错过了)。
我建议您尝试调用shell来帮助您解释命令并将命令作为字符串传递:
(5个答案)
3年前关闭。
我遇到了使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而不是将其放入文件中。
如果确实已经回答了,我对此表示歉意,但是我找不到适合我的解决方案。
提前致谢。
最佳答案
我假设您命令中的>>
应该创建输出的重定向。但是,这里不是这种情况。在命令行中给出时,操作符>>
由shell解释;该命令仅将参数取为最大值,并将其排除在外。然后,shell会确保文件描述符被正确处理以进行重定向。
在您的情况下,该命令将获得三个参数,即给定的字符串ps
,>>
和test.txt
。这就像打字
command ps '>>' test.txt
这样,您正在调用的命令可能并不会执行太多操作,可能会在stderr上给出一条错误消息,告知它接收到的错误参数(您可能错过了)。
我建议您尝试调用shell来帮助您解释命令并将命令作为字符串传递:
execl("/bin/sh", "-c", "/home/"user name"/opSys ps >> test.txt",
(char*)NULL);
关于c - 无法使excel()正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42237499/