$Id: w3m-pclose.md 810 2006-05-09 02:02:28Z sakurai $
w3m、ホ・ミ・ー、ス、タオ、キ、ソサ、ホオュマソ、ヌ、ケ。」 ・ミ・ース、タオ、ホ・ア。シ・ケ・ケ・ソ・ヌ・」ナェ、ハハェ、ャ、「、、ネヘュヘム、ォ、ハ、ネサラ、テ、ソ、ホ、ヌ。「クウォ、キ、゙、ケ。」
(テホソヘーハウー、ォ、)ネソカチ、ャ、「、、ミ。「ツ霹テハ、ス、ッ、ォ、筅キ、、゙、サ、。」
NetBSD、ヒ、ニw3m-0.5.1、トケサエヨサネ、テ、ニ、、、、ネ。「"No Line"、ネ、、、ヲノスシィ、ャスミ、ニ・レ。シ・ク、ウォ、ア、ハ、ッ、ハ、サ、ャ、「、。」 ーナル"No Line"、ャスミ、、ネ。「、ス、ーハケ゚、マータレ・レ。シ・ク、ウォ、ア、ハ、ッ、ハ、遙「 、ス、、ヌ、篶オヘフヘ・レ。シ・ク、ウォ、ウ、ヲ、ネ、ケ、、ネ。「Segmentation fault、ヌヘ、チ、。」
bookmark、リ、ホトノイテ・レ。シ・ク、箋ォ、ア、ハ、ッ、ハ、、ソ、癸「。ヨク螟ヌbookmark、キ、隍ヲ。ラ、ネサラ、テ、ニ window、ウォ、、、ソ、゙、゙、ヒ、キ、ニ、ェ、、、ソ・レ。シ・ク、bookmark、ケ、サ、筅ヌ、ュ、ハ、、。」
fdopen、ヌopen、キ、ソpipe、・ッ・。シ・コ、ケ、コン、ヒ、マfclose、ヌ・ッ・。シ・コ、キ、ハ、ア、、ミ、ハ、鬢ハ、、、ャ。「 fclose、ヌ、マ、ハ、ッpclose、サネ、テ、ニ、、、ソ、ソ、癸「pipe、・ッ・。シ・コ、ヌ、ュ、ニ、、、ハ、、。」
、゙、コイソ、ャオッ、ウ、テ、ニ、、、、ォ、テホ、、ソ、癸「ktrace、ヌw3m、オッニー。」
$ ktrace w3m -v
"No Line"、ャネッタク、ケ、、゙、ヌ。「・ヲ・ァ・ヨ・ヨ・鬣ヲ・ク・・ー、キ、゙、ッ、。」 "No Line"、ャスミ、ソ、鬘「kdump、ヌtrace data、コタョ。」テ豼ネ、クォ、ニ、゚、。」
$ kdump > log
$ vim log
log、イシ、ォ、鮑ォ、ニ、、、ッ、ネ。「、「、荀キ、イ、ハケヤ、ャ。」
21910 w3m CALL pipe
21910 w3m RET pipe -1 errno 24 Too many open files
、ユ、爍」pipe、・ェ。シ・ラ・、キ、隍ヲ、ネ、ケ、、ャ。「エ、ヒ・ユ・。・、・、ウォ、ュ、ケ、ョ、ヌシコヌヤ、キ、ニ、、、、隍ヲ、タ。」 pclose、キヒコ、、ニ、、、、ホ、タ、、ヲ、ォ。」
・ェ。シ・ラ・、キ、ニ、、、・ユ・。・、・ソ、ャツソ、ケ、ョ、サ、ャ、、ォ、テ、ソ、ホ、ヌ。「fstat、キ、ニ、゚、。」
$ fstat | grep w3m
sakurai w3mimgdisplay 16161 wd /usr 202753 drwxr-xr-x 7680 r
sakurai w3mimgdisplay 16161 0* pipe 0xc38b53d4 <- 0xc38b5e38 r
sakurai w3mimgdisplay 16161 1* pipe 0xc38b5dac -> 0xc38b508c w
sakurai w3mimgdisplay 16161 2 / 495627 crw-rw-rw- null w
sakurai w3mimgdisplay 16161 3* unix stream c08d7f40 <-> c08e95c0
sakurai w3m 4153 wd /usr 202753 drwxr-xr-x 7680 r
sakurai w3m 4153 0 / 496850 crw-rw-rw- ttyp5 rw
sakurai w3m 4153 1 / 496850 crw-rw-rw- ttyp5 rw
sakurai w3m 4153 2 / 496850 crw-rw-rw- ttyp5 rw
sakurai w3m 4153 3 / 496850 crw-rw-rw- ttyp5 rw
sakurai w3m 4153 4* pipe 0xc38b508c <- 0xc38b5dac r
sakurai w3m 4153 5* pipe 0xc38b59d8 <- 0x0 r
sakurai w3m 4153 7* pipe 0xc38b5230 <- 0x0 r
sakurai w3m 4153 8* pipe 0xc38b5e38 -> 0xc38b53d4 w
w3m、ヌ・ヲ・ァ・ヨ・ヨ・鬣ヲ・ク・・ー、キ、ニ、、、ッ、ネ。「、ノ、、ノ、read open、キ、テ、ム、ハ、キ、ホpipe、ャチ、ィ、ニ、、、ッ、ホ、ャ、、ォ、。」
sakurai w3mimgdisplay 16161 wd /usr 202753 drwxr-xr-x 7680 r
sakurai w3mimgdisplay 16161 0* pipe 0xc38b53d4 <- 0xc38b5e38 r
sakurai w3mimgdisplay 16161 1* pipe 0xc38b5dac -> 0xc38b508c w
sakurai w3mimgdisplay 16161 2 / 495627 crw-rw-rw- null w
sakurai w3mimgdisplay 16161 3* unix stream c08d7f40 <-> c08e95c0
sakurai w3m 4153 wd /usr 202753 drwxr-xr-x 7680 r
sakurai w3m 4153 0 / 496850 crw-rw-rw- ttyp5 rw
sakurai w3m 4153 1 / 496850 crw-rw-rw- ttyp5 rw
sakurai w3m 4153 2 / 496850 crw-rw-rw- ttyp5 rw
sakurai w3m 4153 3 / 496850 crw-rw-rw- ttyp5 rw
sakurai w3m 4153 4* pipe 0xc38b508c <- 0xc38b5dac r
sakurai w3m 4153 5* pipe 0xc38b59d8 <- 0x0 r
sakurai w3m 4153 7* pipe 0xc38b5230 <- 0x0 r
sakurai w3m 4153 8* pipe 0xc38b5e38 -> 0xc38b53d4 w
sakurai w3m 4153 9* pipe 0xc38b52bc <- 0x0 r
sakurai w3m 4153 10* pipe 0xc38b57a8 <- 0x0 r
、ウ、、マ、゙、ケ、゙、ケ。「pclose、キ、ニ、、、ハ、、イトヌスタュ、ャケ筅、。」 、タ、ア、ノ、ス、筅ス、筍「pipe、イソ、ヒサネ、テ、ニ、、、、ホ、タ、、ヲ? セ蠏ュ、ホ・・ー、ヌ、マ。「0x0、ォ、駻ead、キ、ニ、、、、ホ、ヌ。「pipe、ホwriteツヲ、ホ・ラ・・ー・鬣爨マ、チ、网、ネclose、キ、ニ、、、、隍ヲ、タ、ャ。」
w3m、ヌ・「・ッ・サ・ケ、キ、ハ、ャ、馭stat、、ッ、ハヨ、キ、ニ、、、、ネ。「、ソ、゙、ソ、゙0x0、ヌ、マ、ハ、、ソテヘ、ャスミ、ニ、ュ、ソ。」
sakurai gunzip 9102 wd /usr 202753 drwxr-xr-x 7680 r
sakurai gunzip 9102 0* pipe 0xc38b5a64 <- 0x0 r
sakurai gunzip 9102 1* pipe 0xc38b5578 -> 0xc38b5d20 w
sakurai gunzip 9102 2* pipe 0xc38b5578 -> 0xc38b5d20 w
...
sakurai w3m 7467 11* pipe 0xc38b5d20 <- 0xc38b5578 r
、ハ、、ロ、ノ。」gunzip、ャpipe、ヒwrite、キ、ニ。「w3m、ャ、ス、ホpipe、read、キ、ニ、、、、ホ、ォ。」 、ノ、ヲ、荀鬘「gzip、ホ・ヌ・ウ。シ・ノ、ケヤ、ヲ、ネ。「・ェ。シ・ラ・、キ、ソ、゙、゙、ホpipe、ャチ、ィ、ニ、、、ッ、隍ヲ、タ。」
w3m、ホ・ス。シ・ケ、"gzip"、ヌgrep、ケ、。」
$ grep gzip *
config.h:#define GUNZIP_CMDNAME "gzip"
file.c: { CMP_COMPRESS, ".gz", "application/x-gzip",
file.c: 0, GUNZIP_CMDNAME, GUNZIP_NAME, "gzip",
file.c: {"gzip", "x-gzip", NULL} },
url.c: {"gz", "application/x-gzip"},
・ス。シ・ケ・ウ。シ・ノニ筅ヌ、マ。「GUNZIP_CMDNAME、ネ、、、ヲdefine、サネ、テ、ニ、、、、ホ、ォ。」 シ。、ヒGUNZIP_CMDNAME、ヌgrep。」
$ grep GUNZIP_CMDNAME *
config.h:#define GUNZIP_CMDNAME "gzip"
config.h:#define GUNZIP_CMDNAME "gunzip"
file.c: 0, GUNZIP_CMDNAME, GUNZIP_NAME, "gzip",
file.c: 0, GUNZIP_CMDNAME, GUNZIP_NAME, "compress",
file.c: char *expand_cmd = GUNZIP_CMDNAME;
file.c、クォ、ニ、゚、、ネ。「uncompress_stream()、ヌGUNZIP_CMDNAME、サネ、テ、ニ、、、ソ。」 uncompress_stream()、ホコヌク螟ヒ、マ。「
uf->stream = newFileStream(f1, (void (*)())pclose);
、ネ、「、。」 stream、コ、コン、ヒ。「pclose、ナマ、キ、ニ、、、。」 newFileStream()、ヌ、マ。「stream->file.handle->close、ヒpclose、ツ衄、キ、ニ、、、。」 、ヲ。シ、爍」、ェ、ォ、キ、、ス熙マイソ、筅ハ、、、セ。」
pipe、ホセケ遉ヒ、マ。「file.handle->close()、ャクニ、ミ、、ニ、、、ハ、、、ホ、ォ?
uncompress_stream()、マexamineFile()、ォ、鬘「examineFile()、マloadFile()、ォ、鮑ニ、ミ、、ニ、、、。」 loadFile()、マーハイシ、ホ、隍ヲ、ヒ、ハ、テ、ニ、、、。」
Buffer *
loadFile(char *path)
{
Buffer *buf;
URLFile uf;
init_stream(&uf, SCM_LOCAL, NULL);
examineFile(path, &uf);
if (uf.stream == NULL)
return NULL;
buf = newBuffer(INIT_BUFFER_WIDTH);
current_content_length = 0;
#ifdef USE_M17N
content_charset = 0;
#endif
buf = loadSomething(&uf, path, loadBuffer, buf);
UFclose(&uf);
return buf;
}
UFclose、マ・゙・ッ・、ヌISclose、クニ、、ヌ、、、ニ。「 ISclose()、ヌ、マ。「file_closeキミヘウ、ヌclose、ヒ・サ・テ・ネ、オ、、ソエリソ、クニ、、ヌ、、、。」
file_closeニ筅ヌ。「pclose、ホ・キ・・ワ・、ネclose、ホテヘ、スミホマ、キ、ニ、゚、。」
printf("close=%p, pclose=%p\n", handle->close, pclose);
、ケ、、ネ。「ニア、クテヘ、スミホマ、ケ、。」 、ネ、、、ヲサ、マ。「、チ、网、ネ・ッ・。シ・コエリソ、ヒpclose、マナマ、オ、。「pclose、ャクニ、ミ、、ニ、、、サ、ヒ、ハ、。」
、ヲ、ヲ、爍」pclose、マクニ、ミ、、ニ、、、、ホ、ヒ。「pipe、ャclose、オ、、ハ、、、ネ、マ、ノ、ヲ、、、ヲサ、タ?
、キ、ミ、キヌコ、爍」
、ネ、熙「、ィ、コ。「pclose、ホフ皃テヘ、ヌ、篆ミ、キ、ニ、゚、隍ヲ。」 handle->close、ホフ皃テヘ、スミホマ、ケ、、ネ。「-1、タ、テ、ソ。」 -1、テ、ニイソ、タ?
$ man pclsoe
...
The ppcclloossee() function returns -1 if stream is not associated with a
``popened'' command, if stream has already been ``pclosed'',
popen、オ、、ニ、、、ハ、、・ユ・。・、・、pclose、ケ、、ネ。「-1、ャハヨ、、隍ヲ、タ。」 、ィ? popen、オ、、ニ、、、ハ、、??? ・ム・、・ラ、ハ、ホ、ヒ?
、筅ヲーナルuncompress_stream()、クォ、ニ、゚、。」 pipe、マopen_pipe_rw()、ヌ・ェ。シ・ラ・、キ、ニ、、、、隍ヲ、タ。」
open_pipe_rw、クォ、、ネ。ト
if (fr && pipe(fdr) < 0)
goto err0;
if (fw && pipe(fdw) < 0)
goto err1;
...
*fr = fdopen(fdr[0], "r");
、「、? popen()、ク、网ハ、ッ、ニpipe()、ヌ・ム・、・ラ、コタョ、キ、ニ。「、ス、、ヒツミ、キ、ニfdopen、キ、ニ、、、。」 タ隍ホpclose、ホman、ヒ、隍、ネ。「pclose、ケ、、ヒ、マpopen、キ、ソ・ユ・。・、・、ク、网ハ、ュ、罕タ・癸」 、ネ、、、ヲサ、マ。「pipe、ネfdopen、ヌ・ェ。シ・ラ・、キ、ソ・ユ・。・、・、マ。「fclose、キ、ハ、ッ、チ、罕タ・皃ハ、、ク、网ハ、ォ、、ヲ、ォ。」
、ネ、、、ヲ、、ア、ヌ。「uncompress_stream、ホ
uf->stream = newFileStream(f1, (void (*)())pclose);
、。「
uf->stream = newFileStream(f1, (void (*)())fclose);
、ネハム、ィ、ニ、゚、ソ。」
ハムケケ、キ、ソw3m、マfstat、ヌウホヌァ、キ、ニ、筍「・ェ。シ・ラ・、キ、ソ、゙、゙、ホpipe、マチ、ィ、ハ、ッ、ハ、テ、ソ。」