2010-06-17 3 views
3

У меня есть два процесса.асинхронная запись и чтение файла

  1. Один процесс перенаправляет вывод некоторой команды unix в файл на стороне сервера. Данные всегда добавляются к файлу. например

    find/> tmp.txt 
    
  2. Другой процесс открытия и чтения того же файла и сохранение его в виде строки и отправки всю строку клиенту.

Теперь это происходит одновременно. Я использую python.

Любое предложение как в том, что может быть возможным путем реализации этого сценария. Пожалуйста, объясните пример кода.

Заранее спасибо.

Tazim.

+0

Нужно ли использовать Python? –

+0

Я знаю, что язык не имеет значения для реализации такого сценария. Но мне нужно отправить это, используя только python – tazim

+0

Подсказка: см. «Хвост» (я уверен, что уже существует реализация Python таких) – 2010-06-17 06:54:33

ответ

1

Если то, что вы хотите, имея вывод команды Unix в файл и отображение его в то же время, вы можете [tee][1] его на стандартный вывод и читать его оттуда, как:

>>> command_line = '/bin/find/|tee tmp.txt' 
>>> args = shlex.split(command_line) 
>>> p = subprocess.Popen(args,stdout=subprocess.PIPE) 

Оттуда вы можете либо использовать commuicate(), либо непосредственно читать stdout из объекта POpen. Посмотрите, как это можно использовать. here.

Смежные вопросы