gpt4 book ai didi

c - 使 execl() 工作时遇到问题

转载 作者:行者123 更新时间:2023-11-30 15:00:17 25 4
gpt4 key购买 nike

我在让 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 - 使 execl() 工作时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42237499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com