我有一个用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
就这些