【问题标题】:char *const argv[] vs char *argv and execv system callchar *const argv[] vs char *argv 和 execv 系统调用
【发布时间】:2019-11-20 05:36:51
【问题描述】:

     int main(void)
        {
            int e;
            char *envp[] = {NULL};
            char *argv[] = {"/bin/ls", "-1",NULL};
            //char *argv[] = {"/bin/ls", "-1",NULL};
            argv[1]= "0";;
            //e =  execve("/bin/ls", argv, envp);
            return 0;
}

我已经使用了这段代码,但根据 execve 的声明,它需要第二个参数作为指向 char 的 const 指针,但我已经通过了没有 const 但它工作正常。为什么????

【问题讨论】:

    标签: pointers execve


    【解决方案1】:

    在 C 中,您始终可以将 char* 传递给接受 const char* 的函数,这是一个兼容/合法的赋值。你当然可以传递 const char* 参数,这也很好。但通常,execve 的第一个参数中的const 限定符只是表示函数execve 不会修改它。

    另请参阅此相关帖子:Why can't I pass a char ** to a function which expects a const char **?

    【讨论】:

      猜你喜欢
      • 2015-12-21
      • 2011-07-08
      • 2011-10-24
      • 1970-01-01
      • 2010-10-21
      • 2022-07-14
      • 1970-01-01
      • 2013-10-30
      • 2021-11-09
      相关资源
      最近更新 更多