以execve(2)为例,根据posix有这个原型[1]:
int execve(const char *path, char *const argv[], char *const envp[]);
Run Code Online (Sandbox Code Playgroud)
对我来说,似乎好像
int execve(const char *path, const char *const argv[], const char *const envp[]);
Run Code Online (Sandbox Code Playgroud)
本来是一个明显的改进.
所以,有谁知道为什么会这样?什么可以解释是否需要可能操纵给定的argv/envp字符串?
[1] http://pubs.opengroup.org/onlinepubs/009695399/functions/exec.html
小智 -2
某些程序会操纵 argv 字符串,以便ps输出显示一些状态信息。例如:
root 6550 10809 0 13:10 ? 00:00:00 pure-ftpd (IDLE)
root 32216 1 0 Apr05 ? 00:00:00 vtund[s]: waiting for connections on port 5000
1023 30448 9847 0 09:01 ? 00:00:01 imap [username 192.168.1.135]
Run Code Online (Sandbox Code Playgroud)
因此 argv 值不是恒定的,不应如此声明。