在 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
我想要的命令,现在我可以在哪里找到该命令的来源?