同一实例的停靠图标两次,非 GUI 进程错误地标记"not responding"



我有一个用c++编写的应用程序的问题。

在我启动我的应用程序后,它运行3个子进程。在活动监视器中看起来是这样的:MyApp——process1中——process2——process3

process1是vncserver。如果客户端连接,"process1"现在被称为"MyApp",并且第二个图标出现在Dock中。我搜索到图标出现在函数"select(..)"被调用之后。为什么会发生这种情况?

如果我在process1启动时调用它(在外部.mm文件中)

[NSApplication sharedApplication];
[NSApp setActivationPolicy:NSApplicationActivationPolicyProhibited];

第二个图标出现很短的时间,但立即消失。这就解决了我的问题。但是现在我的"process1"(现在称为"MyApp")在活动监视器中被标记为"未响应"。流程运行并响应客户端。OSX现在认为我的子进程是GUI进程,并将其标记为"无响应"。我该如何预防呢?

编辑:

进程"MyApp"启动了3个进程,一个vncserver,一个ftp客户端和ssh客户端。ftp和ssh客户端工作正常。但是vncserver更改了进程名,并显示了第二个Dock图标。如果我禁用图标,进程被标记为"未响应",但仍然应答连接的客户端。

用户可能会对第二个dock图标或没有响应的过程感到困惑,并认为出了问题。

如果在Info. Info中设置了LSUIElement标志。Plist为相关进程,它将停止图标出现在文档中。

所以把这个添加到信息中。列表文件:-

<key>LSUIElement</key>
<true/>

这是在Launch Services下记录的

我找到了解决方案。vncserver位于Contents/MacOS目录,但它必须位于Contents/Resources

就这些

相关内容

最新更新