在Linux平臺上,如果我在控制檯ps -p "pid" -o command
中編寫代碼,我會在運行程序時獲得在終端中傳遞的所有參數的完整行。在控制檯中輸出如下:COMMAND gedit /home/sasha/Work/unloker/main.cpp (Ubuntu)
。現在我正在編寫主要目的是獲得完整的輸入命令行的程序。我的C++代碼:如何獲得傳遞給正在運行的進程的命令行參數?
snprintf(path_cmdline, sizeof(path_cmdline), "/proc/%d/cmdline", pid);
fd_cmdline = open(path_cmdline, O_RDONLY);
if (fd_cmdline < 0) {
} else {
char process_name[PATH_MAX];
if (read(fd_cmdline, process_name, PATH_MAX) < 0) {
} else {
pid_info pid_t;
pid_t.pid=pid;
strcpy(pid_t.command_line,process_name);
strcpy(pid_t.process_name,basename(process_name));
std::cout << pid_t << std::endl;
}
}
和我的財產以後的程序是這樣的輸出:10753 gedit gedit
,但我怎樣才能得到完整的命令行作爲當ps -p "pid" -o command
的輸出?
哪裏在/proc/%d/
保持正在運行的程序的完整命令行?在Solaris系統中,我知道存在命令pargs
哪些是我想要的,可能是現在怎麼找到這個命令的來源?
我只是嘗試它和'/ proc中/%d/cmdline'了完全相同的信息的'ps -p 「PID」 -o command'。 – Ariel
考慮使用/ proc/self/cmdline,這種方式當前的進程ID將不會被請求 –