Найти - Пользователи
Полная версия: Файловые дескрипторы.
Начало » Python для экспертов » Файловые дескрипторы.
1
vvpoloskin
Господа, помогите, если кто знает.
Предположми, я запускаю из скрипта внешнюю программу, имею его PID.
Как нибудь можно из python, получить информацию(номера, с чем связаны, получить путь к файлу соответствующего дескриптора) по файловым дескрипторам только что запущенного процесса.

Также интересно, могу ли я в запущенном процессе подменить дескрипторы другими. В общем, было бы хорошо, чтобы, например, лог файлы вместо записи в логи, уходили на сокеты или в другие файлы.
dehun
если stdout то смотрите в сторону пайпов. там можно будет поймать весь вывод и перенаправить его куда захотите.
vvpoloskin
dehun
если stdout то смотрите в сторону пайпов. там можно будет поймать весь вывод и перенаправить его куда захотите.
Нет, к сожалению не stdout:( Именно произвольный дескриптор, логи записываются в файл дочерним процессом. Мне бы как-нибудь их обрабатывать.
Ed
Это достаточно непросто будет не только на Питоне сделать и очень системо-зависимо.
На линухе то в /proc/<PID>/fd/ лежат линки на открытые файлы. В BSD вроде было /dev/fd* или что-то подобно Это насчет найти. Насчет подменить думаю еще хуже дело обстоит.
Вот тут описан один жестокий хак: http://ingvar.blog.redpill-linpro.com/2010/07/10/changing-a-process-file-descriptor-on-the-fly/, думаю, что можно найти и другие.
Ed
Вот еще одна реализация хака, на Цэ: http://code.google.com/p/refiler/ Можете собрать питоновым модулем и звать прям из питона.
vvpoloskin
Ed
Вот еще одна реализация хака, на Цэ: http://code.google.com/p/refiler/ Можете собрать питоновым модулем и звать прям из питона.

Совсем hardcore:) Можно уж тогда самому процесс под ptrace запустить, поставить бряку на open, и заменть на что надо:)
vvpoloskin
Хорошо. Тогда так: можно ли перенаправить вывод из открытых процессом дескрипторов на мной определённые дескрипторы?
Андрей Светлов

Боюсь, так просто с дескрипторами не выйдет. Смотреть на файл лога на манер tail и складывать увиденное куда нужно — довольно легко.

vvpoloskin
Андрей Светлов
Боюсь, так просто с дескрипторами не выйдет.
Смотреть на файл лога на манер tail и складывать увиденное куда нужно — довольно легко.

А можно ли какой-нибудь пример, как используя средства python реализовать tail -f. Что-нибудь получше, чем бесконечный цикл.
GaiveR
Кодом не помогу, поскольку сам таким не занимался. Но на сколько я помню операционки позволяют подписываться на события файловой системы.

Посмотрите здесь: http://stackoverflow.com/questions/182197/how-do-i-watch-a-file-for-changes-using-python

Также, если пишите под linux, обратите внимание на pyinotify
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB