Множественные вызовы / dev / stdin с использованием подпроцесса python (* nix) - PullRequest
0 голосов
/ 10 января 2011

У меня есть вызов подпроцесса python, который я хотел бы связать до трех каналов (два стандартных входа и один стандартный выход). Я знаю, что есть только один / dev / stdin, но есть все другие устройства в / dev, о которых я не знаю, и не знаю ни о каких python os, sys или модулях подпроцесса, которые будут использовать их таким образом, чтобы позволяет мне указать путь к устройству для подпроцесса. Открыть.
Причина, по которой я спрашиваю, заключается в том, что я хотел бы передавать информацию из базы данных mysql или архива tar, а не из структуры каталогов, которая у меня есть на данный момент, в которой содержится> 28 000 каталогов. Только в именах каталогов используется много места! Альтернативой является tar / gunzip всей структуры каталогов и маневрирование через сжатый архив. С любым решением, mysql или tar, я все еще хотел бы иметь два канала в подпроцесс. Открыть и один, чтобы я мог обойти жесткий диск.
Нужен ли пример?

1 Ответ

3 голосов
/ 10 января 2011

В системах Unix удобной альтернативой является использование именованного канала . Это похоже на файл, но не занимает места на диске; вы можете писать в него одним процессом и читать из него другим, как каналы. Вы можете сделать так, чтобы ваш подпроцесс выполнял обычный файловый ввод / вывод; Unix (Mac OS / Linux) сделает всю тяжелую работу за вас.

% mkfifo foo
% cat giantFile > foo &
[1] 4667
% wc -l foo
100
...