首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >很难让execl()工作

很难让execl()工作
EN

Stack Overflow用户
提问于 2017-02-14 22:35:10
回答 1查看 349关注 0票数 0

我一直在找主管工作有问题。

代码语言:javascript
复制
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,而不是把它放到一个文件中。

如果这个问题得到了回答,我真的很抱歉,但是我不能找到一个对我有用的解决方案。提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-14 22:44:53

我假设命令中的>>应该创建输出的重定向。然而,这里的情况并非如此。当在命令行上给定时,操作符>>将由shell解释;该命令只获取到和排除它的参数。然后,shell会注意文件描述符在重定向过程中被正确破坏。

在您的示例中,该命令将获得三个参数,即给定的字符串ps>>test.txt。这就像打字一样

代码语言:javascript
复制
 command ps '>>' test.txt

您正在调用的命令可能执行得不多,可能会在stderr上给出一个错误消息,说明它收到的错误参数(您可能漏掉了)。

我建议您尝试调用shell以帮助您解释命令并将命令传递为字符串:

代码语言:javascript
复制
execl("/bin/sh", "-c", "/home/"user name"/opSys ps >> test.txt",
    (char*)NULL);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42237499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档