如何确定应用程序是否没有响应?

C. *_*oss 12 mac bash process macos

我在 OSX 上有一个应用程序,它反复进入“无响应”状态并且必须被强制终止。我希望将其自动化,但是在使用ps检查流程时,我没有看到任何与“未响应”状态相对应的内容。我查看了状态指示器,但无论是否响应,应用程序都显示为S。

state 状态由字符序列给出,例如“RWNA”。第一个字符表示进程的运行状态:

  • I 标记一个空闲的进程(睡眠时间超过大约 20 秒)。
  • R 标记一个可运行的进程。
  • S 标记睡眠时间少于 20 秒的进程。
  • T 标记一个停止的进程。
  • U 将进程标记为不间断等待。
  • Z 标记一个死进程(一个“僵尸”)。

我如何确定进程是否像活动管理器那样没有响应


我也对 AppleScript 解决方案持开放态度。

JvO*_*JvO 9

Not Responding 状态不是进程状态,而是进程已停止与窗口管理器/图形引擎通信。它可以被捆绑在一个循环中,挂在一个套接字上,远程文件,任何让它返回到处理事件的主循环的东西。窗口管理器注意到事件正在排队,因此将其标记为“无响应”

您可能需要编写一个小的 X11 程序来向进程发送虚拟事件,然后在它没有响应时将其杀死。