06.06 用 /proc/self/cmdline 获取命令行参数
/proc/self/cmdline 是一个以 \0
结尾的文件,我尝试过用 fgets
读取,但是失败了;转而使用 fgetc
逐字符读文件。
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
int main() {
FILE *f = fopen("/proc/self/cmdline", "r");
if (!f) {
perror("fopen");
return 1;
}
int i = 0, j = 0;
int ch;
char buf[128];
while ((ch = fgetc(f)) != EOF) {
if (ch == '\0') {
buf[j] = '\0';
printf("argv[%d]: %s\n", i++, buf);
j = 0;
} else {
buf[j++] = ch;
}
}
fclose(f);
}
例子:
(py310) xxx /data/apue $ /data/apue/build/apue 5 265
argv[0]: /data/apue/build/apue
argv[1]: 5
argv[2]: 265