池田@福山市%休眠中です。
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