Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
/proc/[PID]/cmdline中的可执行文件的名称是什么?_C_Pid_Proc - Fatal编程技术网

/proc/[PID]/cmdline中的可执行文件的名称是什么?

/proc/[PID]/cmdline中的可执行文件的名称是什么?,c,pid,proc,C,Pid,Proc,根据/proc/[PID]/cmdline的手册页:此只读文件保存进程的完整命令行,其中命令行参数作为一组字符串,由空字节('\0')分隔,最后一个字符串后面还有一个空字节 我正在编写一个采用特定PID的C程序,我希望通过打开cmdline文件获得可执行文件的名称。但是,我不能确切地确定内容的含义,特别是可执行文件的名称将确切地位于何处 例如,运行/proc/4404/cmdline可提供以下输出: /usr/bin/whoopsie-f 还有几个例子: /sbin/init/splash /

根据/proc/[PID]/cmdline的手册页:此只读文件保存进程的完整命令行,其中命令行参数作为一组字符串,由空字节('\0')分隔,最后一个字符串后面还有一个空字节

我正在编写一个采用特定PID的C程序,我希望通过打开cmdline文件获得可执行文件的名称。但是,我不能确切地确定内容的含义,特别是可执行文件的名称将确切地位于何处

例如,运行/proc/4404/cmdline可提供以下输出:

/usr/bin/whoopsie-f
还有几个例子:

/sbin/init/splash
/lib/systemd/systemd--user
/usr/bin/dbus-daemon--system--address=systemd:--nopidfile--systemd-activation--syslog-only
我如何准确地破译这个输出?可执行文件的名称是否恰好位于固定位置(如果是,请指出位置?)。我还看到其他线程运行命令:“readfile exe”,但我正试图用C语言完成这一切,特别需要利用cmdline文件访问可执行文件的名称


谢谢

我建议您通过管道将输出传输到例如
xxd
,以查看它的十六进制转储。那里有一个分隔符,在其他地方是看不见的。但在C语言中很容易使用。文件中的每个“argv”都是
nul
终止的字符串。使用C,您可以重复执行strcpy@AjayBrahmakshatriya是的,但是我如何知道哪一个是可执行文件的名称呢?@aDabOfRanch第一个。就像C-
argv[0]
@AjayBrahmakshatriya一样,如果cmdline包含输入/usr/bin/whoopsie-f,那么根据argv[0],可执行文件的名称是usr?我建议您将输出管道连接到例如
xxd
,以查看它的十六进制转储。那里有一个分隔符,在其他地方是看不见的。但在C语言中很容易使用。文件中的每个“argv”都是
nul
终止的字符串。使用C,您可以重复执行strcpy@AjayBrahmakshatriya是的,但是我如何知道哪一个是可执行文件的名称呢?@aDabOfRanch第一个。就像C-
argv[0]
@AjayBrahmakshatriya那样,如果cmdline包含输入/usr/bin/whoopsie-f,那么根据argv[0],可执行文件的名称是usr?