lsof和ps中列的对齐方式

时间:2016-10-24 21:46:17

标签: c++ ps lsof

我正在努力将popen的输出解析为lsofps

我想知道第一列和最后一列总是左对齐吗?其余介于两者之间是否正确对齐?如列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

1 个答案:

答案 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