OSDN Git Service

(split) LDP: Update release pages based on LDP 3.54 release
[linuxjm/LDP_man-pages.git] / release / man3 / popen.3
index c471699..8085e2c 100644 (file)
@@ -1,6 +1,7 @@
 .\" Copyright 1991 The Regents of the University of California.
 .\" All rights reserved.
 .\"
+.\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
 .\" Redistribution and use in source and binary forms, with or without
 .\" modification, are permitted provided that the following conditions
 .\" are met:
@@ -28,6 +29,7 @@
 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
+.\" %%%LICENSE_END
 .\"
 .\"     @(#)popen.3    6.4 (Berkeley) 4/30/91
 .\"
 .\" Modified Sat May 18 20:37:44 1996 by Martin Schulze (joey@linux.de)
 .\" Modified 7 May 1998 by Joseph S. Myers (jsm28@cam.ac.uk)
 .\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.\"
 .\" Japanese Version Copyright (c) 1997 Takashi Yoshino
 .\"       all rights reserved.
 .\" Translated 1997-01-21, Takashi Yoshino <tyoshino@eng.toyo.ac.jp>
 .\" Modified 2007-05-03, Akihiro MOTOKI
 .\" Modified 2008-11-09, Akihiro MOTOKI, LDP v3.13
 .\"
-.TH POPEN 3  2010-02-03 "GNU" "Linux Programmer's Manual"
-.SH Ì¾Á°
-popen, pclose \- ¥×¥í¥»¥¹¤È¤ÎÆþÎÏ/½ÐÎÏÍѤΥѥ¤¥×¡¦¥¹¥È¥ê¡¼¥à
-.SH ½ñ¼°
+.TH POPEN 3 2013\-04\-19 GNU "Linux Programmer's Manual"
+.SH 名前
+popen, pclose \- プロセスとの入力/出力用のパイプストリーム
+.SH 書式
 .nf
-.B #include <stdio.h>
+\fB#include <stdio.h>\fP
 .sp
-.BI "FILE *popen(const char *" command ", const char *" type );
+\fBFILE *popen(const char *\fP\fIcommand\fP\fB, const char *\fP\fItype\fP\fB);\fP
 .sp
-.BI "int pclose(FILE *" stream );
+\fBint pclose(FILE *\fP\fIstream\fP\fB);\fP
 .fi
 .sp
 .in -4n
-glibc ¸þ¤±¤Îµ¡Ç½¸¡ºº¥Þ¥¯¥í¤ÎÍ×·ï
-.RB ( feature_test_macros (7)
-»²¾È):
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
 .ad l
 .in
 .sp
-.BR popen (),
-.BR pclose ():
+\fBpopen\fP(), \fBpclose\fP():
 .RS 4
 _POSIX_C_SOURCE\ >=\ 2 || _XOPEN_SOURCE || _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
-.SH ÀâÌÀ
-.BR popen ()
-´Ø¿ô¤Ï¡¢¥×¥í¥»¥¹¤ò¥ª¡¼¥×¥ó¤¹¤ë¡£¶ñÂÎŪ¤Ë¤Ï¡¢
-¥Ñ¥¤¥×¤òÀ¸À®¤·¡¢¥Õ¥©¡¼¥¯¤ò¹Ô¤¤¡¢¥·¥§¥ë¤òµ¯Æ°¤¹¤ë¡£
-ÄêµÁ¤«¤éʬ¤«¤ë¤è¤¦¤Ë¡¢¥Ñ¥¤¥×¤Ï°ìÊý¸þ¤Ê¤Î¤Ç¡¢
-.I type
-°ú¤­¿ô¤Ë¤ÏÆɤ߹þ¤ß¤«½ñ¤­¹þ¤ß¤Î¤É¤Á¤é¤«°ìÊý¤À¤±¤ò»ØÄê¤Ç¤­¤ë
-(ξÊý¤Ï»ØÄê¤Ç¤­¤Ê¤¤)¡£
-À¸À®¤µ¤ì¤ë¥¹¥È¥ê¡¼¥à¤Ï¡¢¤³¤Î»ØÄê¤ËÂбþ¤·¤Æ¡¢Æɤ߼è¤êÀìÍѤޤ¿¤Ï
-½ñ¤­¹þ¤ßÀìÍѤΤ¤¤º¤ì¤«¤È¤Ê¤ë¡£
+.SH 説明
+\fBpopen\fP()  関数は、プロセスをオープンする。具体的には、 パイプを生成し、フォークを行い、シェルを起動する。
+定義から分かるように、パイプは一方向なので、 \fItype\fP 引き数には読み込みか書き込みのどちらか一方だけを指定できる (両方は指定できない)。
+生成されるストリームは、この指定に対応して、読み取り専用または 書き込み専用のいずれかとなる。
 .PP
-.I command
-°ú¤­¿ô¤Ï¡¢¥·¥§¥ë¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¤ò´Þ¤à
-NULL ½ªÃ¼¤µ¤ì¤¿Ê¸»úÎó¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£
-¤³¤Î¥³¥Þ¥ó¥É¤Ï
-.B \-c
-¥Õ¥é¥°¤òÍѤ¤¤Æ
-.I /bin/sh
-¤ËÅϤµ¤ì¤ë¡£
-¥³¥Þ¥ó¥É¤Î²ò¼á¤Ï (¤â¤·É¬Íפʤé¤Ð) ¥·¥§¥ë¤Ë¤è¤Ã¤Æ¹Ô¤ï¤ì¤ë¡£
-.I type
-°ú¤­¿ô¤Ï¡¢NULL ½ªÃ¼¤µ¤ì¤¿Ê¸»úÎó¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¡¢
-Æɤ߹þ¤ß¤ò¼¨¤¹Ê¸»ú \(aqr\(aq ¤«¡¢½ñ¤­¹þ¤ß¤ò¼¨¤¹Ê¸»ú \(aqw\(aq ¤Î
-¤É¤Á¤é¤«°ìÊý¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-glibc 2.9 °Ê¹ß¤Ç¤Ï¡¢¤³¤Î°ú¤­¿ô¤Ëʸ»ú \(aqe\(aq ¤òÄɲäǻØÄê¤Ç¤­¤ë¡£
-ʸ»ú \(aqe\(aq ¤ò»ØÄꤹ¤ë¤È¡¢
-Âбþ¤¹¤ë¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ë¤ª¤¤¤Æ¡¢
-close-on-exec ¥Õ¥é¥°
-.RB ( FD_CLOEXEC )
-¤¬¥»¥Ã¥È¤µ¤ì¤ë¡£
-¤³¤ì¤¬Ìò¤ËΩ¤ÄÍýͳ¤Ë¤Ä¤¤¤Æ¤Ï¡¢
-.BR open (2)
-¤Î
-.B O_CLOEXEC
-¥Õ¥é¥°¤ÎÀâÌÀ¤ò»²¾È¤Î¤³¤È¡£
+\fIcommand\fP 引き数は、シェルのコマンドラインを含む NULL 終端された文字列へのポインタである。 このコマンドは \fB\-c\fP フラグを用いて
+\fI/bin/sh\fP に渡される。 コマンドの解釈は (もし必要ならば) シェルによって行われる。 \fItype\fP 引き数は、NULL
+終端された文字列へのポインタで、 読み込みを示す文字 \(aqr\(aq か、書き込みを示す文字 \(aqw\(aq の
+どちらか一方を指定しなければならない。 glibc 2.9 以降では、この引き数に文字 \(aqe\(aq を追加で指定できる。 文字
+\(aqe\(aq を指定すると、 対応するファイルディスクリプタにおいて、 close\-on\-exec フラグ (\fBFD_CLOEXEC\fP)
+がセットされる。 これが役に立つ理由については、 \fBopen\fP(2)  の \fBO_CLOEXEC\fP フラグの説明を参照のこと。
 .PP
-.BR popen ()
-¤«¤é¤ÎÊÖ¤êÃͤϡ¢Ä̾ï¤Îɸ½à I/O ¥¹¥È¥ê¡¼¥à¤ÈƱ¤¸¤Ç¤¢¤ë¤¬¡¢
-.BR fclose (3)
-¤Ç¤Ï¤Ê¤¯
-.BR pclose ()
-¤ÇÊĤ¸¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¤³¤È¤À¤±¤¬°Û¤Ê¤ë¡£
-¤³¤Î¥¹¥È¥ê¡¼¥à¤Ø½ñ¤­¹þ¤ó¤À·ë²Ì¤Ï¥³¥Þ¥ó¥É¤Îɸ½àÆþÎϤ˽ñ¤­¹þ¤Þ¤ì¤ë¡£
-¤½¤·¤Æ¡¢¥³¥Þ¥ó¥É¤Îɸ½à½ÐÎϤϡ¢
-¥³¥Þ¥ó¥É¤½¤Î¤â¤Î¤¬ÃÖ¤­´¹¤ï¤Ã¤Æ¤·¤Þ¤ï¤Ê¤¤¸Â¤ê¡¢
-.BR popen ()
-¤ò¸Æ¤ó¤À¥×¥í¥»¥¹¤Îɸ½à½ÐÎϤÈƱ¤¸¤³¤È¤Ë¤Ê¤ë¡£
-µÕ¤Ë¡¢"popened"
-.RB ( popen ()
-¤Ë¤è¤Ã¤Æ³«¤«¤ì¤¿) ¥¹¥È¥ê¡¼¥à¤«¤é¤ÎÆɤ߹þ¤ß¤Ï¡¢
-¤½¤Î¥³¥Þ¥ó¥É¤Îɸ½à½ÐÎϤòÆɤ߹þ¤à¤³¤È¤Ë¤Ê¤ë¡£
-¤½¤·¤Æ¡¢¤½¤Î¥³¥Þ¥ó¥É¤Îɸ½àÆþÎϤÏ
-.BR popen ()
-¤ò¸Æ¤ó¤À¥×¥í¥»¥¹¤Îɸ½àÆþÎϤÈƱ°ì¤Ç¤¢¤ë¡£
+\fBpopen\fP()  からの返り値は、通常の標準 I/O ストリームと同じであるが、 \fBfclose\fP(3)  ではなく \fBpclose\fP()
+で閉じなくてはならないことだけが異なる。 このストリームへ書き込んだ結果はコマンドの標準入力に書き込まれる。 そして、コマンドの標準出力は、
+コマンドそのものが置き換わってしまわない限り、 \fBpopen\fP()  を呼んだプロセスの標準出力と同じことになる。 逆に、"popened"
+(\fBpopen\fP()  によって開かれた) ストリームからの読み込みは、 そのコマンドの標準出力を読み込むことになる。
+そして、そのコマンドの標準入力は \fBpopen\fP()  を呼んだプロセスの標準入力と同一である。
 .PP
-¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢
-.BR popen ()
-¤Î½ÐÎÏ¥¹¥È¥ê¡¼¥à¤Ï´°Á´¤Ë¥Ð¥Ã¥Õ¥¡¥ê¥ó¥°¤µ¤ì¤ë¤³¤È¤ËÃí°Õ¤·¤è¤¦¡£
+デフォルトでは、 \fBpopen\fP()  の出力ストリームは完全にバッファリングされることに注意しよう。
 .PP
-.BR pclose ()
-´Ø¿ô¤Ï¡¢(¥Ñ¥¤¥×¤Ë) ´ØÏ¢¤Å¤±¤é¤ì¤¿¥×¥í¥»¥¹¤¬½ªÎ»¤¹¤ë¤Î¤òÂÔ¤Á¡¢
-.BR wait4 (2)
-¤Ë¤è¤Ã¤ÆÊÖ¤µ¤ì¤¿¥³¥Þ¥ó¥É¤Î½ªÎ»¾õÂÖ¤òÊÖ¤¹¡£
-.SH ÊÖ¤êÃÍ
-.BR popen ()
-´Ø¿ô¤Ï¡¢
-.BR fork (2)
-¤Þ¤¿¤Ï
-.BR pipe (2)
-¸Æ¤Ó½Ð¤·¤¬¼ºÇÔ¤·¤¿¾ì¹ç¤ä¡¢
-¥á¥â¥ê³ä¤êÅö¤Æ¤¬¤Ç¤­¤Ê¤«¤Ã¤¿¾ì¹ç¡¢ NULL ¤òÊÖ¤¹¡£
+\fBpclose\fP()  関数は、(パイプに) 関連づけられたプロセスが終了するのを待ち、 \fBwait4\fP(2)
+によって返されたコマンドの終了状態を返す。
+.SH 返り値
+\fBpopen\fP()  関数は、 \fBfork\fP(2)  または \fBpipe\fP(2)  呼び出しが失敗した場合や、 メモリ割り当てができなかった場合、
+NULL を返す。
 .PP
-.BR pclose ()
-´Ø¿ô¤Ï¡¢
-.BR wait4 (2)
-¤¬¥¨¥é¡¼¤òÊÖ¤·¤¿¤ê¡¢²¿¤«Â¾¤Î¥¨¥é¡¼¤¬¸«¤Ä¤«¤Ã¤¿¾ì¹ç¡¢
-\-1 ¤òÊÖ¤¹¡£
-.SH ¥¨¥é¡¼
-.BR popen ()
-´Ø¿ô¤Ï¡¢¥á¥â¥ê¥¢¥í¥±¡¼¥·¥ç¥ó¤Ë¼ºÇÔ¤·¤Æ¤â
-.I errno
-¤ò¥»¥Ã¥È¤·¤Ê¤¤¡£
-.BR popen ()
-¤¬Ãæ¤Ç¸Æ¤Ó½Ð¤¹
-.BR fork (2)
-¤ä
-.BR pipe (2)
-¤¬¼ºÇÔ¤·¤¿¾ì¹ç¤Ë¤Ï¡¢
-.I errno
-¤¬Å¬Àڤ˥»¥Ã¥È¤µ¤ì¤ë¡£
-°ú¤­¿ô
-.I type
-¤¬Ìµ¸ú¤Ç¤¢¤ê¡¢¤³¤Î¾õÂÖ¤¬¸¡ÃΤµ¤ì¤¿¾ì¹ç¤Ë¤Ï¡¢
-.I errno
-¤¬
-.B EINVAL
-¤Ë¥»¥Ã¥È¤µ¤ì¤ë¡£
+.\" These conditions actually give undefined results, so I commented
+.\" them out.
+.\" .I stream
+.\" is not associated with a "popen()ed" command, if
+.\".I stream
+.\" already "pclose()d", or if
+The \fBpclose\fP()  function returns \-1 if \fBwait4\fP(2)  returns an error, or
+some other error is detected.  In the event of an error, these functions set
+\fIerrno\fP to indicate the cause of the error.
+.SH エラー
+\fBpopen\fP()  関数は、メモリアロケーションに失敗しても \fIerrno\fP をセットしない。 \fBpopen\fP()  が中で呼び出す
+\fBfork\fP(2)  や \fBpipe\fP(2)  が失敗した場合には、 \fIerrno\fP が適切にセットされる。 引き数 \fItype\fP
+が無効であり、この状態が検知された場合には、 \fIerrno\fP が \fBEINVAL\fP にセットされる。
 .PP
-.BR pclose ()
-¤¬¡¢»Ò¥×¥í¥»¥¹¤Î¾õÂÖ¤ò¼èÆÀ¤Ç¤­¤Ê¤«¤Ã¤¿¾ì¹ç¡¢
-.I errno
-¤¬
-.B ECHILD
-¤Ë¥»¥Ã¥È¤µ¤ì¤ë¡£
-.SH ½àµò
-POSIX.1-2001.
+\fBpclose\fP()  が、子プロセスの状態を取得できなかった場合、 \fIerrno\fP が \fBECHILD\fP にセットされる。
+.SH 準拠
+POSIX.1\-2001.
 
-.I type
-¤Ë»ØÄê¤Ç¤­¤ë \(aqe\(aq ¤Ï Linux ¤Ç¤Î³ÈÄ¥¤Ç¤¢¤ë¡£
-.SH ¥Ð¥°
-Æɤ߹þ¤ß¤Î¤¿¤á¤Ë³«¤«¤ì¤¿¥³¥Þ¥ó¥É¤Îɸ½àÆþÎϤÏ
-.BR popen (),
-¤ò¸Æ¤ó¤À¥×¥í¥»¥¹¤È°ì½ï¤Ë¡¢¤½¤ÎÆɤ߼è¤ê°ÌÃÖ¤ò¶¦Í­¤¹¤ë¡£
-¤½¤Î¤¿¤á¡¢¤â¤È¤Î¥×¥í¥»¥¹¤¬¥Ð¥Ã¥Õ¥¡¥ê¥ó¥°¤µ¤ì¤¿Æɤ߼è¤ê¤ò½ªÎ»¤·¤¿¤é¡¢
-¤½¤Î¥³¥Þ¥ó¥É¤ÎÆþÎÏ°ÌÃÖ¤ÏͽÁÛ¤µ¤ì¤¿¤â¤Î¤Ë¤Ï
-¤Ê¤Ã¤Æ¤¤¤Ê¤¤¤«¤â¤·¤ì¤Ê¤¤¡£
-ƱÍͤˡ¢½ñ¤­¹þ¤ß¤Î¤¿¤á¤Ë³«¤«¤ì¤¿¥³¥Þ¥ó¥É¤«¤é¤Î½ÐÎϤϡ¢
-¤â¤È¤Î¥×¥í¥»¥¹¤Î½ÐÎϤȺ®¤¶¤ê¹ç¤¦¤³¤È¤Ë¤Ê¤ë¤«¤â¤·¤ì¤Ê¤¤¡£
-¸å¼Ô¤Ï
-.BR popen ()
-¤ÎÁ°¤Ë
-.BR fflush (3)
-¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ë¤è¤Ã¤Æ²óÈò²Äǽ¤Ç¤¢¤ë¡£
+\fItype\fP に指定できる \(aqe\(aq は Linux での拡張である。
+.SH バグ
+読み込みのために開かれたコマンドの標準入力は \fBpopen\fP(), を呼んだプロセスと一緒に、その読み取り位置を共有する。
+そのため、もとのプロセスがバッファリングされた読み取りを終了したら、 そのコマンドの入力位置は予想されたものには なっていないかもしれない。
+同様に、書き込みのために開かれたコマンドからの出力は、 もとのプロセスの出力と混ざり合うことになるかもしれない。 後者は \fBpopen\fP()  の前に
+\fBfflush\fP(3)  を呼び出すことによって回避可能である。
 .PP
-¥·¥§¥ë¤Î¼Â¹Ô¤Î¼ºÇԤϡ¢
-¥·¥§¥ë¤¬¥³¥Þ¥ó¥É¤Î¼Â¹Ô¤Ë¼ºÇÔ¤·¤¿¤³¤È¤ä¡¢
-¥³¥Þ¥ó¥É¤¬¤¹¤°¤Ë½ªÎ»¤·¤Æ¤·¤Þ¤Ã¤¿¤³¤È¤È¡¢¶èÊ̤¬¤Ä¤«¤Ê¤¤¡£
-Í£°ì¤Î¥Ò¥ó¥È¤Ï½ªÎ»¾õÂÖ¤¬ 127 ¤Ë¤Ê¤ë¤³¤È¤Ç¤¢¤ë¡£
-.\" .SH ÍúÎò
+.\" .SH HISTORY
+.\" A
 .\" .BR popen ()
-.\" ´Ø¿ô¤È
+.\" and a
 .\" .BR pclose ()
-.\" ´Ø¿ô¤Ï AT&T UNIX ¤Î Version 7 ¤«¤éƳÆþ¤µ¤ì¤¿¡£
-.SH ´ØÏ¢¹àÌÜ
-.BR sh (1),
-.BR fork (2),
-.BR pipe (2),
-.BR wait4 (2),
-.BR fclose (3),
-.BR fflush (3),
-.BR fopen (3),
-.BR stdio (3),
-.BR system (3)
+.\" function appeared in Version 7 AT&T UNIX.
+シェルの実行の失敗は、 シェルがコマンドの実行に失敗したことや、 コマンドがすぐに終了してしまったことと、区別がつかない。 唯一のヒントは終了状態が
+127 になることである。
+.SH 関連項目
+\fBsh\fP(1), \fBfork\fP(2), \fBpipe\fP(2), \fBwait4\fP(2), \fBfclose\fP(3), \fBfflush\fP(3),
+\fBfopen\fP(3), \fBstdio\fP(3), \fBsystem\fP(3)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.54 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。