我正在解析popen
到lsof
和ps
的输出。
我想知道第一列和最后一列总是左对齐吗?其余的都是正对的吗?如列FD
所示,列3
的最小宽度是多少?
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEn
bash 252 noida cwd DIR 1,2 1088 410828 /Users/noida ion/Desktopn
bash 252 noida txt REG 1,2 628736 11647 /bin/bashn
bash 252 noida txt REG 1,2 622896 11866 /usr/lib/dyldn
bash 252 noida txt REG 1,2 382100934 418209 /private/var/db/dyld/dyld_shared_cache_x86_64n
bash 252 noida 0u CHR 16,0 0t401079 601 /dev/ttys000n
bash 252 noida 1u CHR 16,0 0t401079 601 /dev/ttys000n
bash 252 noida 2u CHR 16,0 0t401079 601 /dev/ttys000n
bash 252 noida 255u CHR 16,0 0t401079 601 /dev/ttys000n
0u000bu0001
您得到的输出可能是默认的格式化输出。当在popen中传递shell命令时,也要添加格式选项。
将列命令管道到您的lsof命令。
,
反转对齐
lsof -ps | column -t | rev
粗糙的例子:
//用于反转对齐。
FILE *fp;
char pOpenCmd[100] = "lsof -ps | column -t | rev";
fp = popen(pOpenCmd, "r");
使用column -t
可以通过管道"column -c"来指定列的宽度。
你可以在下面的链接中找到更多的选项。http://man7.org/linux/man-pages/man1/column.1.html