Официальный форум СВД Встраиваемые Системы
22 Ноября, 2019, 17:38:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: QNX Программное получение командной строки процесса по известному PID  (Прочитано 862 раз)
Владимир В
Интересующийся

Сообщений: 2


« : 11 Апреля, 2019, 20:27:38 »

Известно, что по PID процесса можно получить его символическое имя, если пользоваться функцией devctl(), например, так:
Код:
    struct
    {
        procfs_debuginfo info;
        char buff [PATH_MAX];
    } name;
 
    fd = open ("/proc/16254/as", O_RDONLY); // Здесь PID процесса равен 16254, получаем дескриптор процесса fd
    devctl(fd, DCMD_PROC_MAPDEBUG_BASE, &name, sizeof(name), 0); // В буфере name окажется интересующее нас имя процесса
Но вопрос следующий: а как подобными методами получить параметры командной строки, с которыми процесс запускался?
Ведь операционная система всю эту информацию в себе содержит, поскольку команда ps -ef командного интерпретатора
позволяет ее увидеть. Значит, должна быть и возможность программно все это получить?
Записан
Олег Большаков
Администратор
Житель форума

Сообщений: 3113



WWW
« Ответ #1 : 11 Апреля, 2019, 20:57:39 »

Здравствуйте, Владимир!

Если я не ошибаюсь, то от Вашего предприятия мы уже получили подобный вопрос. Обратитесь, пожалуйста, к нам на адрес технической поддержки.
Записан

Владимир В
Интересующийся

Сообщений: 2


« Ответ #2 : 11 Апреля, 2019, 21:43:31 »

Какое предприятие? Я сам от себя. Случайно задался таким вопросом два дня назад. Спросил на cyberforum. Нигде в Интернете для QNX такой вопрос не ставился - только для Linux. Там есть подкаталоги /proc/pid/cmdline. В QNX их нет. Можно, конечно, программно выполнить из С-кода команду shell типа ps - и получить список процессов, PID и командных строк, но это неполноценное решение. Интересно бы с помощью стандартных процедур вроде devctl(). Но, похоже, в QNX 6.5.0 это невозможно, или там не все документировано.
« Последнее редактирование: 14 Апреля, 2019, 15:56:58 от Владимир В » Записан
Василий Дмитриев
Опытный пользователь

Сообщений: 333



« Ответ #3 : 12 Апреля, 2019, 15:19:50 »

в QNX 5 это невозможно
В QNX 5 возможно всё!
Записан

Санкции! Запрещаю Бараку Обаме и членам конгресса США читать мои посты!
Игорь Рондарев
Сотрудник СВД ВС
Опытный пользователь

Сообщений: 196


Сотрудник СВД ВС


WWW
« Ответ #4 : 22 Мая, 2019, 11:29:32 »

Интересно бы с помощью стандартных процедур вроде devctl(). Но, похоже, в QNX 6.5.0 это невозможно, или там не все документировано.
Владимир, добрый день. Готового devctl()-а на этот случай не предусмотрено. Информация о параметрах командной строки может быть получена путём анализа стека главного потока приложения (собственно, так pidin и поступает). Исходный код утилиты был в своё время открыт в рамках проекта OpenQNX и до сих пор без проблем доступен на просторах Интернета, можете ознакомиться с ним.
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP © 2002-2019 СВД Встраиваемые Системы.
При использовании материалов сайта ссылка на forum.kpda.ru обязательна.

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines | © Aiwan. Kolobok smiles | Sitemap
Valid XHTML 1.0! Valid CSS!
Сайт СВД ВС

В последний раз google посещал эту страницу 02 Сентября, 2019, 05:07:20