Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.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
Linux 清除子进程中的集合_Linux_Callback_Fork_Trace_Intel Pin - Fatal编程技术网

Linux 清除子进程中的集合

Linux 清除子进程中的集合,linux,callback,fork,trace,intel-pin,Linux,Callback,Fork,Trace,Intel Pin,我有一个多进程应用程序,我使用follow\u execv开关在Pin中跟踪它。简单地说,程序中存在一个fork。在出现fork之前,我创建了一个集合并进行了一些插入。就在fork之后,由于follow_execv开关,我的pintool的额外副本被创建并执行。父级和子级pintools都包含相同的内容。但是调用后,子对象中的集合将变为空。为什么会这样 注意:程序是gimp。它既是多进程的,又是多线程的。这类程序在Pin中有什么限制吗?只是一些想法。。。英特尔的Pin库分叉安全吗?如果是,那么可

我有一个多进程应用程序,我使用
follow\u execv
开关在
Pin
中跟踪它。简单地说,程序中存在一个
fork
。在出现
fork
之前,我创建了一个集合并进行了一些插入。就在
fork
之后,由于
follow_execv
开关,我的
pintool
的额外副本被创建并执行。父级和子级
pintools
都包含相同的内容。但是调用后,子对象中的集合将变为空。为什么会这样


注意:程序是
gimp
。它既是多进程的,又是多线程的。这类程序在
Pin
中有什么限制吗?

只是一些想法。。。英特尔的Pin库分叉安全吗?如果是,那么可能是Pin库有一个
at_fork
处理程序,用于清除fork上子级的状态。事实上,只清除了部分状态。我在父级中有一个计数器变量,其值在子级中保持不变@jww,这是一个很好的暗示。我创建了一个共享页面,以避免可能出现的Pin初始化混乱。嗯,我认为我应该放弃
共享内存。在每个
之后,它们也通过
移除。似乎使用
文件
在父级和子级之间共享数据
pintools
是最后一种解决方案。