同一实例的停靠图标两次,非 GUI 进程错误地标记"not responding"
Dock Icon twice of same instance and Non-Gui process wrongly tagged "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
就这些
相关文章:
- boost::进程间消息队列引发错误
- 进程返回 -1073741819 (0xC0000005) 错误
- gcc 找不到 -lgcc, g++.exe: 错误: 创建进程: 没有这样的文件或目录
- 创建进程 API 失败,在窗口 122 上出现错误代码 10
- 64 位进程中的 AnyCPU C# DLL 无法引用 64 位C++ DLL(给出错误:无法加载文件或程序集)
- Boost进程"系统"功能中的错误处理
- 获取进程内存信息失败,错误 6 句柄无效
- 通过服务启动进程后,从SHGetKnownFolderPath 0x80070005错误
- 提升进程间named_mutex导致分段错误
- 加速进程间:管理共享内存错误
- 创建进程失败,意外错误
- 多线程中的 std::basicstring 的运行时分段错误C++点燃进程
- 提升 1.58.0 窗口进程.h 错误
- 创建进程使用路径时出现错误事件:类型 "char *" 的 E0167 参数与类型 "LPWSTR" 的参数不兼容
- Ubuntu E:子进程 /usr/bin/dpkg 返回错误代码 (1)
- 提升 vs2010 上的进程错误
- C++ Mingw32 创建进程() 失败,错误代码 2:系统找不到指定的文件
- 结束进程错误代码 -1,如果访问结构的字符串字段
- C++ 创建进程错误代码 2 ( "ERROR_FILE_NOT_FOUND" ) 在视窗 7 (64)
- 同一实例的停靠图标两次,非 GUI 进程错误地标记"not responding"