Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Вопрос программёрам по popen()

9 views
Skip to first unread message

AuR/eliano

unread,
May 18, 2007, 11:14:38 AM5/18/07
to
Приветствую, All!

Такой вопрос: из программы на Си вызываю в цикле некую утилиту с помощью
функции popen(). Всё работает, но примерно с полусекундными задержками. Пробую
сделать то же самое в командной строке ksh в цикле типа "for i in 1 2 3 4 5 6 7
8 9 10; do утилита; done", и задержки между выводами сокращаются примерно в 2
раза (а то и больше). В принципе, это не критично (вызывать утилиту мне надо
раз в несколько секунд), однако неприятно, ведь если у меня задержки больше,
чем в shell, значит я медленне гружу эту утилиту, увеличивается нагрузка на
процессор и пр. Приоритеты в данном случае ни при чём: запускал свою прогу с
более высоким приоритетом, результат тот же. Hикто не знает, в чём я неправ и
как это реализовать, чтобы работало по крайней мере не медленнее, чем в shell?


Удачи. AuR/eliano.

... Придурков нам не надо. (Светлана Динабург)

AuR/eliano

unread,
May 18, 2007, 11:47:14 AM5/18/07
to
Приветствую, AuR/eliano!

Пятница 18 Мая 2007 20:14, я писал All:

Ae> Такой вопрос: из программы на Си вызываю в цикле некую утилиту с
Ae> помощью функции popen(). Всё работает, но примерно с полусекундными
Ae> задержками. Пробую сделать то же самое в командной строке ksh в цикле
Ae> типа "for i in 1 2 3 4 5 6 7 8 9 10; do утилита; done", и задержки
Ae> между выводами сокращаются примерно в 2 раза (а то и больше).

Вопрос снят (и извиняюсь за то, что как следует не подумал, прежде чем
спрашивать). У меня в программе организуется pipe канал, а в приведённой
командной строке никакого канала нет. А вот если изменить строку так:
for i in 1 2 3 4 5 6 7 8 9 10; do утилита | cat ; done
или так:
(for i in 1 2 3 4 5 6 7 8 9 10; do утилита; done) | cat
то временные характеристики будут примерно такие же. Хотя никогда бы не
подумал, что неименованные каналы жрут столько времени.

Удачи. AuR/eliano.

... Категорически воспрещается считать мой отзыв чистосердечным.(Тётя Чарли)

0 new messages