【问题标题】:Using exec() functions to Call Linux Command in C使用 exec() 函数在 C 中调用 Linux 命令
【发布时间】:2015-09-27 02:14:16
【问题描述】:

我一直在尝试这样做一段时间,无论我尝试什么,我都无法让它工作。

我的 C 代码如下所示:

char *const parmList[] = {"ps","-o pid",processID,NULL};
execvp("/bin/ps", parmList);

我做错了什么?

【问题讨论】:

  • processID的类型是什么?如果它是一个包含 PID 的字符串,你会没事的。如果它是一个整数,那么你会遇到问题——它应该是一个字符串;命令的所有参数都是字符串。而且,FWIW,所写的命令可以在 Mac OS X 上运行,但在带有 error: improper format list 的 Linux 上失败(但在 Linux 上,您可以使用 ps -opid,ppid,time-o 和要打印的列列表之间没有空格,或使用两个单独的参数)。

标签: c linux exec


【解决方案1】:

未测试,我认为您正在执行

ps "-o pid,ppid,time" 3817

试试这个:

char *const parmList[] = {"ps","-o","pid,ppid,time",processID,NULL};
execvp("/bin/ps", parmList);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 2014-07-04
    相关资源
    最近更新 更多