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
ていますが、このコマンドのソースをどこで見つけることができるでしょうか?