gpt4 book ai didi

C 从/proc 中的文件中提取信息

转载 作者:太空宇宙 更新时间:2023-11-04 07:57:55 24 4
gpt4 key购买 nike

我试图从 C 中的/proc/pid/cmdline 获取包含 PID 可执行文件的路径。手册页指出:

“命令行参数出现 在此文件中作为一组由空字节分隔的字符串 ('\0'),在最后一个字符串之后还有一个空字节。"

我的想法(伪代码):

int main(int argc, char** argv){
// Assume file_path has been initialized
char executable_path[1000];
FILE* file = fopen(file_path, "r");
if(f != NULL){

fscanf("%s", executable_path);
}
return 0;
}

因为我只想要这个文件的第一个字符串(因为这是包含可执行文件的路径)并且我确定第一个字符串后有一个'\0',fscanf 是正确使用的函数吗?它会检测到第一个 '\0' 然后将整个字符串存储到 executable_path 数组中的第一个 '\0' 吗? (注意:我不需要提取任何其他字符串)。

谢谢!

最佳答案

不要为此使用fscanf,如果命令名称中有空格,则不会获取全名。

你可以使用fgets,它会在'\0'处停止读取。我现在有一个使用 pid 10979 运行的进程:

FILE *fp = fopen("/proc/10979/cmdline", "r");

char line[1024];
fgets(line, sizeof line, fp);

puts(line);

fclose(fp);

这打印:

/usr/bin/gvim

关于C 从/proc 中的文件中提取信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48778826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com