| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Русские символы в качестве аргумента system() |
| Автор: rudolfninja 16.5.2015, 15:57 |
| Привет всем. Ребят, помогите решить такую проблему. Мне надо из приложения запустить функцию system(), аргументами которой будет путь к файлу, содержащему русские символы. С версией system() это не работает. Если передаю аргументы только с англ. строкой, то все ок. Если в имени файла встречается русский символ, то system его не может нормально обработать. Не подскажете, как можно решить эту проблему? Вообще, задача такова: рядом с моим исполняемым файлом есть исполняемый файл, например, test.exe. Мне надо с моего приложения вызвать test.exe c аргументом, указывающим на файл. Как это можно еще сделать если не через system()? Спасибо. |
| Автор: Cheloveck 16.5.2015, 16:27 |
| Использование system -- не лучшая практика. Windows: https://msdn.microsoft.com/en-us/library/windows/desktop/ms682425%28v=vs.85%29.aspx UNIX: http://pubs.opengroup.org/onlinepubs/7908799/xsh/fork.html + http://pubs.opengroup.org/onlinepubs/009695399/functions/exec.html Если исользуешь какие-нибудь тулкиты, типа boost, Qt или GTK+, то там есть свои кроссплатформенные функции. |
| Автор: Cheloveck 16.5.2015, 16:45 |
| http://doc.qt.io/qt-5/qprocess.html#details |
| Автор: rudolfninja 16.5.2015, 17:08 | ||||
| Что-то не срабатывает QProcess Через system делаю так:
Через QProcess:
Процесс запускается, вот аргументы, вроде как, не передаются в него, т.к. нужного файла не появляется. |
| Автор: feodorv 16.5.2015, 19:40 |
| Создайте программу, которая просто печатает передаваемые ей аргументы, байт в байт. Подсуньте её вместо своей программы. Посмотрите на вывод. Скорее всего, дело в кодировках. Добавлено через 55 секунд Или в пробелах в именах файлов/директорий... |