【问题标题】:execvp doesn't work with other codeexecvp 不适用于其他代码
【发布时间】:2014-06-06 03:35:35
【问题描述】:

我正在尝试制作一个程序,其中不断提示用户输入命令(例如 ls -l)我将输入标记为命令并将它们存储在 char* 数组中。当我调用 execvp 执行命令时:

char* paramList[2] = {"/bin/ls", "-l"};

execvp(paramList[0], paramList);

什么都没有发生。我有另一个程序,除了 execvp 调用和硬编码的 ls -l 命令,它什么都没有。但是,一旦添加任何内容,即使是未使用的变量,代码也会停止工作。

【问题讨论】:

    标签: execvp


    【解决方案1】:

    您的数组 (paramList) 少一个条目。

    作为 execvp 的第二个参数给出的数组必须以 NULL 条目结尾,因此数组中有 3 个值,而不是您当前拥有的两个。

    char* paramList[3] = { "/bin/ls", "-l", NULL };
    execvp(paramList[0], paramlist);
    

    应该按预期工作。

    可能更好/更容易使用:

    char* paramList[] = { "/bin/ls", "-l", NULL };
    

    并让编译器计算它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-09
      • 1970-01-01
      • 2017-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-06
      • 1970-01-01
      相关资源
      最近更新 更多