Если вы удовлетворены общей используемой пропускной способностью ввода / вывода (или если ваша программа почти полностью выполняет сетевой ввод / вывод), вы можете посмотреть /proc/<pid>/ioфайл. Вы хотите rcharи wcharполя. Возможно, вы захотите вычесть read_bytesи write_bytes, так как они представляют чтения и записи на уровне хранения. См. Раздел 3.3 http://www.kernel.org/doc/Documentation/filesystems/proc.txt .
Если вам нужно больше разрешения ... вы можете написать сценарий, используя, lsofи strace, хотя было бы больно правильно все угадывать. Основная идея заключается в том, чтобы разобрать вывод strace -p <pid>, захватывая первый параметр (= дескриптор файла) и возвращаемое значение (= число байт) из read(), write(), send()и recv()вызовов ( ПРИМЕЧАНИЕ Есть еще несколько системных вызовов для прослушивания, я гавань» выследил их всех). Отбросить отрицательные значения; они указывают на ошибки. Используйте, lsof -p <pid>чтобы выяснить, какие файловые дескрипторы являются сокетами TCP / UDP, и суммировать количество для fd. Эта стратегия не требует root, если вы владеете процессом, который вы проверяете, но писать было бы очень сложно, не говоря уже о том, чтобы писать хорошо.