Я пишу программу C++ для распознавания образов в OpenCV. Подсказка для ввода пользователем, когда пользователь вводит опцию "Просмотр базы данных изображений", я хочу, чтобы окно показывало файлы в этом каталоге. Я попробовал системный вызов с
system("nautilus /home/sample/index.jpg");
но он говорит, что не смог найти каталог и попросил проверить орфографию. Мне было интересно, было ли это из-за выполнения программы из другого каталога. Может ли кто-нибудь объяснить, почему это происходит? Если да, то как обойти это?
Если вы хотите открыть nautilus, поместите полный путь (возможно,/usr/bin/nautilus, но вы можете легко обнаружить, используя какую команду).
Некоторые дополнительные примечания:
Не все системы Linux имеют Nautilus (например, Mint заменил Nautilus на nemo)
Если вы хотите создавать интерактивные окна, вам нужна правильная графическая библиотека. В этом случае, поскольку вы программируете в C++, я предлагаю вам использовать Qt, который доступен во всех дистрибутивах на рабочем столе Linux.
Вы должны использовать менеджер файлов по умолчанию, а не наутилус или любой другой. Попробуйте посмотреть здесь: Linux-приложения по умолчанию, Как найти файловый менеджер по умолчанию
system
, используйте для этого соответствующие системные вызовы.