Я работал над анализом вывода popen
в lsof
а также ps
,
Мне было интересно, всегда ли первый и последний столбец выровнены по левому краю? А остальные между ними всегда выровнены? И как видно в столбце FD
, минимальная ширина столбца 3
?
Например:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME\n
bash 252 noida cwd DIR 1,2 1088 410828 /Users/noida ion/Desktop\n
bash 252 noida txt REG 1,2 628736 11647 /bin/bash\n
bash 252 noida txt REG 1,2 622896 11866 /usr/lib/dyld\n
bash 252 noida txt REG 1,2 382100934 418209 /private/var/db/dyld/dyld_shared_cache_x86_64\n
bash 252 noida 0u CHR 16,0 0t401079 601 /dev/ttys000\n
bash 252 noida 1u CHR 16,0 0t401079 601 /dev/ttys000\n
bash 252 noida 2u CHR 16,0 0t401079 601 /dev/ttys000\n
bash 252 noida 255u CHR 16,0 0t401079 601 /dev/ttys000\n
0\u000b\u0001
Выходная информация, которую вы получаете, может быть отформатированной по умолчанию.
При передаче команды оболочки в popen также добавьте параметры формата.
Передайте команду column к вашей команде lsof.
например:
отменить выравнивание
lsof -ps | столбец -t | оборот
грубый пример:
// для отмены выравнивания.
FILE *fp;
char pOpenCmd[100] = "lsof -ps | column -t | rev";
fp = popen(pOpenCmd, "r");
просто выровняв все по левой стороне, используйте «column -t»
может быть, вы можете передать «столбец -c», чтобы указать ширину столбцов.
У вас есть еще несколько вариантов здесь в этой ссылке ниже.
http://man7.org/linux/man-pages/man1/column.1.html
Других решений пока нет …