我正在努力将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
答案 0 :(得分:1)
你得到的输出可能是默认格式化的。 在popen中传递shell命令时也添加了格式选项。
将column命令传递给lsof命令。
例如:
反转对齐
lsof -ps |列-t |转
粗略的例子:
//用于撤销分配。
FILE *fp;
char pOpenCmd[100] = "lsof -ps | column -t | rev";
fp = popen(pOpenCmd, "r");
只需将所有内容对齐到左侧,使用" column -t"
可能是你可以管#34;列-c"指定列的宽度。
您可以在此下方链接中找到更多选项。 http://man7.org/linux/man-pages/man1/column.1.html