![如何在 bash 中将 X 窗口 ID 与父进程 ID 进行匹配?](https://linux22.com/image/1516492/%E5%A6%82%E4%BD%95%E5%9C%A8%20bash%20%E4%B8%AD%E5%B0%86%20X%20%E7%AA%97%E5%8F%A3%20ID%20%E4%B8%8E%E7%88%B6%E8%BF%9B%E7%A8%8B%20ID%20%E8%BF%9B%E8%A1%8C%E5%8C%B9%E9%85%8D%EF%BC%9F.png)
我有一个使用 来操作窗口的脚本wmctrl
。
它基本上可以工作,但存在竞争条件。当启动任意程序时,我需要确定其 X 窗口 ID。简单版本基本上是
wmctl -l | cut -d ' ' -f 1 >before
do
wmctl -l | cut -d ' ' -f 1 >after
until diff before after reveals a new line
包含上述逻辑的 bash 脚本知道启动的子进程的 PID。子进程分叉,孙进程创建一个 X 窗口 ID,然后子进程终止。
我有子进程的 PID 和候选孙进程窗口的 X 窗口 ID。我没有任何中间进程的 PID。
我无法同步窗口创建或修改子程序本身,因此为了避免竞争条件,我需要验证候选 X 窗口 ID 是否来自现已死亡的子进程。我该怎么做?