vine-users ML アーカイブ



[vine-users:066252] Re: ps の 表示幅

  • From: IKEDA Katsumi <ikedak@xxxxxxxxxxxxxxxx>
  • Subject: [vine-users:066252] Re: ps の 表示幅
  • Date: Mon, 14 Jun 2004 14:54:02 +0900 (JST)
池田@福山市%休眠中です。

From: 長南洋一 <cyoichi@xxxxxxxxxxxxxxx>
Date: Mon, 14 Jun 2004 13:56:16 +0900 (JST)
Message-ID: <20040614.135616.41629482.cyoichi@xxxxxxxxxxxxxxx>
> どういう理屈なんでしょう。w オプションを指定しない場合、出力先が
> 端末だったら、端末の横幅まで表示、出力先がパイプやファイルだったら、
> 80 字まで出力。というのが ps の仕様なんでしょうか。

なんとなく私も kterm で実験。

---------------- ここから ----------------
$ resize
COLUMNS=215;
LINES=75;
export COLUMNS LINES;
$ ps aux | grep [x]fs
xfs        (略) xfs -droppriv 
$ ps auxw | grep [x]fs
xfs        (略) xfs -droppriv -daemon
$ ps --width 215 aux | grep [x]fs
xfs        (略) xfs -droppriv -daemon
---------------- ここまで ----------------

ついでに……。

From: procps-2.0.6/ps/global.c
| static void set_screen_size(void){
|   struct winsize ws;
|   char *columns; /* Unix98 environment variable */
|   char *lines;   /* Unix98 environment variable */
|   if(ioctl(1, TIOCGWINSZ, &ws) != -1 && ws.ws_col>0 && ws.ws_row>0){
|     screen_cols = ws.ws_col;
|     screen_rows = ws.ws_row;
|   }else{  /* TODO: ought to do tgetnum("co") and tgetnum("li") now */
|     screen_cols = 80;
|     screen_rows = 24;
|   }

ioctl でなんかやってますね。
# man ioctl(2) ioctl_list(2)

From: procps-2.0.6/ps/parser.c
| static void choose_dimensions(void){
|   if(w_count && (screen_cols<132)) screen_cols=132;
|   if(w_count>1) screen_cols=OUTBUF_SIZE;
|   /* perhaps --html and --null should set unlimited width */
| }

w_count には w 引数の個数が入っています。

さらに詳しくは…… (^_^;;

-- 
池田 克巳  <ikedak@xxxxxxxxxxxxxxxx>
           <http://www013.upp.so-net.ne.jp/ikeda/index.html>
GnuPG Fingerprint = 69BC 8241 0485 389E AA50  E795 7A32 D184 75CE EB0F