LINUX.ORG.RU

Сообщения ntohins

 

Использование модуля Subprocess в Python

Немного нубский вопрос, и всё же.
Такая задача: нужно обмениваться с программой строчками текста. Например как-то так

from subprocess import Popen, PIPE
proc = Popen(['cat', '-'], stdin=PIPE, stdout=PIPE)
for number in ('one', 'two', 'three'):
   proc.stdin.write(number + '\n')
   print proc.stdout.read()

В консоли вызвав «cat -» получается ответ при нажатии Enter.
При чтении stdout в Python, вызов блокируется. В этом и проблема.

Работать будет, если закрыть stdin или использовать subprocess.communicate. Но communicate тоже закрывает stdin, а он должен оставаться открытым. Посылка EOF (вроде 0x1a) после строки тоже не действует.

Как можно решить эту проблему?

 ,

ntohins
()

Установка ограничений (ulimits) при отладке в GDB

Подскажите. Такая ситауция:

Для разрабатываемой программы нужно увеличить лимит одновременно открытых файлов. Сделано через /etc/security/limits.conf добавлением строчек
* hard nofile 100000
* soft nofile 100000

и добавлением строки
session required pam_limis.so
в /etc/pam.d/login.

И вроде при загрузке во всех шеллах ulimit правильно работает и изнутри gdb тоже.
Но программа в отладке должна запускаться из под рута, и была сделана такая заплатка для GDB.
/usr/bin/gdb переделан в shell файл
exec sudo /usr/bin/gdb-bin «$@»
из которого запускается оригинальный gdb-bin c передачей параметров

НО: при такой схеме запуска gdb наследует стандартные ограничения, и не замечает новые.
Можно ли как-то исправить положение? Или изменить вообще схему.
Чтобы IDE под рутом не запускать и лимиты в gdb сохранить?
Дистрибутив - Debian Squeeze.

 , , , , ulimits

ntohins
()

RSS подписка на новые темы