2009-03-17 2 views
0

Ситуация у меня есть: я перенаправляю вход с одного места в моей программе на другой через трубу. Однако, похоже, что это работает правильно, поэтому я хотел бы следить за тем, что происходит через трубу.Как контролировать трафик через трубу?

В настоящее время я использую dup2(), чтобы просто перезаписать stdin и stdout из канала.

Как я могу контролировать, что происходит между трубой?

ответ

4

Когда я отлаживаю трубку в сценарии bash, я часто использую команду tee, чтобы захватить то, что происходит через нее, не нарушая поток.

Существует соответствующий tee system call, который выглядит так, как будто он может быть полезен для отладки труб в коде C, но я никогда не пробовал.

1

Полезный инструмент Pipe Viewer. Я не думаю, что он имеет непосредственное применение при просмотре фактических данных, проходящих через ваш канал, но позволит вам следить за прогрессом и пропускной способностью. Я думаю, что ответ timday - это больше того, что вы ищете.

1

Вы также можете быть заинтересованы в pv инструмент (man page, review):.

«ру - Pipe Viewer - это инструмент терминала на основе мониторинга прогресса данных через трубопровод может быть вставлен в любой нормальный конвейер между двумя процессами, чтобы дать визуальную индикацию того, как быстро проходят данные, сколько времени оно прошло, насколько оно близко к завершению, и оценить, как долго это будет до завершения ».