如何在 bash 中将 X 窗口 ID 与父进程 ID 进行匹配?

如何在 bash 中将 X 窗口 ID 与父进程 ID 进行匹配?

我有一个使用 来操作窗口的脚本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 是否来自现已死亡的子进程。我该怎么做?

相关内容