Linux下是否存在直接获取完整命令行参数的方法?
Linux下获取完整命令行的方法
Linux没有像Windows里GetCommandLineW()那样直接返回完整命令行字符串的系统调用,但可以通过以下方式实现类似需求:
- 读取
/proc/self/cmdline文件
这是最可靠的方式,/proc/self/cmdline文件里以空字符\0分隔每个命令行参数,读取后只需把空字符替换成空格就能还原成完整的命令行格式。示例代码如下:
#include <stdio.h> #include <string.h> int main() { FILE *fp = fopen("/proc/self/cmdline", "r"); if (fp) { char buf[1024]; ssize_t len = fread(buf, 1, sizeof(buf)-1, fp); if (len > 0) { buf[len] = '\0'; // 替换空分隔符为空格 for (int i = 0; i < len; i++) { if (buf[i] == '\0') { buf[i] = ' '; } } printf("完整命令行:%s\n", buf); } fclose(fp); } return 0; }
- 使用环境变量
_
这个环境变量一般只保存程序的执行路径,不会包含完整的命令行参数,只能用来获取程序本身的位置,实用性不强,不推荐用来获取完整命令行。
内容的提问来源于stack exchange,提问作者Vipul Gupta
相关产品推荐
相关产品推荐

