У меня проблема с моим приложением, написанным в C++.
После того, как я запустил приложение, он запускает 3 подпроцесса. На мониторе активности это выглядит так: MyApp - process1 - process2 - process3
process1 - это vncserver. Если клиент подключается, "process1" теперь называется "MyApp", а второй значок появляется в Dock. Я обнаружил, что значок появляется после вызова функции "select (..)". Почему это случилось?
Если я назову это при запуске process1 (во внешнем файле.mm)
[NSApplication sharedApplication];
[NSApp setActivationPolicy:NSApplicationActivationPolicyProhibited];
второй значок появляется очень короткое время, но сразу исчезает. Это решает мою проблему. Но теперь мой "process1" (теперь называемый "MyApp") помечен как "не реагирующий" на мониторе активности. Процесс запускается и отвечает клиенту. OSX теперь думает, что мой подпроцесс является графическим интерфейсом и помечен как "не отвечающий". Как я могу это предотвратить?
РЕДАКТИРОВАТЬ:
Процесс "MyApp" запускает 3 процесса: vncserver, ftp-клиент и ssh-клиент. Клиент ftp и ssh работает нормально. Но vncserver изменяет имя своего процесса и показывает второй значок Dock. Если я отключу значок, процесс будет помечен как "не отвечающий", но все же будет отвечать на подключенные клиенты.
Пользователь может быть смущен о втором значке док-станции или не отвечающем процессе и думает, что что-то пошло не так.
Я нашел решение. vncserver
был расположен в каталоге Contents/MacOS
, но он должен быть в Contents/Resources
Все это :)
Если вы установите флаг LSUIElement в Info.plist для соответствующего процесса, он остановит значок, появляющийся в документе.
Поэтому добавьте это в файл info.plist: -
<key>LSUIElement</key>
<true/>
Это описано в разделе " Запуск сервисов".