小编xYZ*_*xYZ的帖子

/proc/<pid> 什么时候会被删除?

进程 A 在运行时打开 && 映射了数千个文件。然后killl -9 <pid of process A>就发出来了。然后我对以下两个事件的顺序有疑问。
a)/proc/<pid of process A>无法访问。
b) 进程 A 打开的所有文件都被关闭。

有关该问题的更多背景信息:
进程 A 是一个多线程后台服务。它是由 cmd 启动的./process_A args1 arg2 arg3
还有一个看门狗进程,它定期(每 1 秒)检查进程 A 是否还活着。如果进程 A 死亡,则重新启动它。看门狗检查进程A的方式如下。 1)收集2)
下的所有数字子目录与进程A的cmdline进行比较。如果这些匹配,则进程A处于活动状态并且不执行任何操作,否则重新启动进程A。/proc/
/proc/<all-pids>/cmdline/proc/<some-pid>/cmdline

进程A在初始化时会做以下事情。
1)打开fileA
2)flock fileA
3)mmap fileA到内存中
4)关闭fileA
进程A在初始化后将mmap上千个文件。几分钟后,kill -9 <pid of process A>发出。看门狗检测到进程A死亡,重新启动它。但有时进程 A 卡在step 2 flock fileA。经过一番调试,我们发现当进程A被杀死时,就会执行fileA的unlock。但有时此事件会在step 2 flock fileA新流程之后发生。
所以我们猜测通过监视器检查进程是否存活的方式/proc/<pid of process A> 是不正确的。

linux linux-kernel

1
推荐指数
1
解决办法
2187
查看次数

标签 统计

linux ×1

linux-kernel ×1