2014.03 from http://www./blog/archives/789.html 大家都知道, C 语言可执行程序的入口是 main 函数, main 函数的原型是这样: int main(int argc, char **argv); 编译程序生成可执行文件后, 从命令行运行, 参数 argc 是指命令行参数的个数(包括程序本身), 而参数 argv 则是所有参数字符串. 你有没有想过, 为什么 argv 的类型是 char**, 而不是 const char** 呢? 难道 argv 的内容也可以被修改? 没错! 命令行传过来的参数是可以被修改的. 而修改后能带来什么好处呢? 其实, 你可以通过修改 argv 来更改进程在 top/ps 中的显示. 例如, 如果你的可执行文件是 a.out, 那么你可以让它在 top/ps 显示成 abc, 也就是修改进程的名字. 可以看看下面的代码: #include<stdio.h> #include<string.h> int main(int argc, char **argv){ strcpy(argv[0], "hi!"); getchar(); return 0; } 把代码保存为 a.c, 编译并运行程序: gcc a.c; ./a.out 这个程序会卡住, 这时, 你打开另一个命令行, 执行 Related posts: |
|
来自: 心不留意外尘 > 《ccpp for hardware》