因此定义了execvp:
int execvp(const char *file, char *const argv[]);
Run Code Online (Sandbox Code Playgroud)
这使得这样的代码无法使用:
const char* argv[] = {"/bin/my", "command", "here", NULL};
execvp(argv[0], argv);
Run Code Online (Sandbox Code Playgroud)
这是意外遗漏吗?围绕这个const_cast是否安全?或者做一些execvp实现实际上是在那个内存上乱写?
POSIX规范说(http://pubs.opengroup.org/onlinepubs/009604499/functions/exec.html):
的
argv[]和envp[]指针和字符串数组到这些阵列点不得通过调用修改以exec函数之一,除非更换处理图像的结果.
我认为缺失(或错位)const只是一个历史怪异.
| 归档时间: |
|
| 查看次数: |
1838 次 |
| 最近记录: |