2016-10-24 12 views
1

popenからlsofpsの出力を解析していました。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 

答えて

1

アウトは、既定かもしれものをフォーマットしてきている置きます。 popenでshellコマンドを渡しているときにもformatオプションを追加してください。

lsofコマンドにcolumnコマンドをパイプします。

例:

アライメント-psのlsof

を逆にします|列-t |レビ

ラフ例:

//アライメントを逆転させます。ちょうど左側にすべてを整列させるための

FILE *fp; 
char pOpenCmd[100] = "lsof -ps | column -t | rev"; 
fp = popen(pOpenCmd, "r"); 

は、あなたがパイプ「欄-c」列の幅を指定することができかもしれ

「-t列」を使用します。

このリンクには、さらにいくつかのオプションがあります。 http://man7.org/linux/man-pages/man1/column.1.html

+0

ありがとうございます。ありがとうございます。 – Noitidart