File и Serial port
От: ateist85 Россия  
Дата: 19.02.14 08:42
Оценка:
Добрый день всем!
Можно ли как-то узнать какой программой(название программы, путь к ней) открыт файл и com-порт? вроде, как существуют утилиты позволяющие это сделать, но интересует именно программная реализация...

19.02.14 15:03: Перенесено модератором из 'C/C++' — Кодт
Re: File и Serial port
От: Хреннос  
Дата: 19.02.14 09:29
Оценка: +1
Здравствуйте, ateist85, Вы писали:

A> Можно ли как-то узнать какой программой(название программы, путь к ней) открыт файл и com-порт? вроде, как существуют утилиты позволяющие это сделать, но интересует именно программная реализация...


Это вам в низкоуровневое програмимирование.
Средств получения такой информации в языке С++ нет. Вам придется искать платформо-зависимое решение.

Например, для линукса можно обойти все каталоги fd в /proc/[PID]. Там лежат симлинки на открытые процессом файлы и устройства. Читаем все симлинки, сравниваем с искомым устройством. Если совпало — значит, читаем симлинк /proc/[PID]/exe — он указывает на исполнимый бинарь процесса. А в файле /proc/[PID]/cmdline будет лежать командная строка, с которой был вызван процесс (ничего, что файл имеет нулевую длину, на самом деле он не пустой — просто виртуальный). Все это будет работать при условии, что в линуксе подмонтирована файловая система procfs, а программа запущена из-под пользователя root.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.