Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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
C++ 查找Valgrind PID以调用应用程序_C++_Bash_Valgrind_Pid - Fatal编程技术网

C++ 查找Valgrind PID以调用应用程序

C++ 查找Valgrind PID以调用应用程序,c++,bash,valgrind,pid,C++,Bash,Valgrind,Pid,我正在尝试使用valgrind工具运行应用程序。但是应用程序需要调用应用程序作为参数的父进程id valgrind --leak-check=no --error-limit=no MyApplication {Parent_Process_ID} 但由于valgrind进程仍在启动,我无法从bash获取pid。我尝试了下面的方法作为上一个进程的pid valgrind --leak-check=no --error-limit=no MyApplication $! 但它给出了valgri

我正在尝试使用valgrind工具运行应用程序。但是应用程序需要调用应用程序作为参数的父进程id

valgrind --leak-check=no --error-limit=no MyApplication {Parent_Process_ID}
但由于valgrind进程仍在启动,我无法从bash获取pid。我尝试了下面的方法作为上一个进程的pid

valgrind --leak-check=no --error-limit=no MyApplication $!
但它给出了valgrind之前运行的进程的进程id

有人能帮我查一下valgrind的pid吗?

你可以试试

( exec valgrind --leak-check=no --error-limit=no MyApplication $$ )
括号创建一个子shell<代码>$$扩展到shell本身的PID


然后
exec
valgrind
程序加载到当前进程中,使其PID保持不变,即valgrind将具有与(子)shell相同的PID。

正常运行valgrind不需要父进程ID。您可以使用
getppid()重新编写应用程序以获取程序中的父进程ID
。如果您无法控制应用程序的源代码,那么可以在Linux中使用ns_last_PID proc接口控制PID。检查并确认。有了这个proc文件,您可以强制系统在下一个进程创建中使用特定的PID(不确定有多大保证)。我无法访问代码来重写应用程序,并且它有通过父进程ID调用的限制。