aboutsummaryrefslogtreecommitdiff
path: root/documentation/manual-pages/ja/man3/popen.3
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/manual-pages/ja/man3/popen.3')
-rw-r--r--documentation/manual-pages/ja/man3/popen.3204
1 files changed, 204 insertions, 0 deletions
diff --git a/documentation/manual-pages/ja/man3/popen.3 b/documentation/manual-pages/ja/man3/popen.3
new file mode 100644
index 0000000000..7cb4dab905
--- /dev/null
+++ b/documentation/manual-pages/ja/man3/popen.3
@@ -0,0 +1,204 @@
+.\" Copyright (c) 1991, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" 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.
+.\"
+.\" @(#)popen.3 8.2 (Berkeley) 5/3/95
+.\" %FreeBSD: src/lib/libc/gen/popen.3,v 1.10.2.3 2001/12/14 18:33:51 ru Exp %
+.\"
+.\" $FreeBSD$
+.\"
+.Dd May 3, 1995
+.Dt POPEN 3
+.Os
+.Sh 名称
+.Nm popen ,
+.Nm pclose
+.Nd
+.Tn 入出力処理
+.Sh ライブラリ
+.Lb libc
+.Sh 書式
+.In stdio.h
+.Ft FILE *
+.Fn popen "const char *command" "const char *type"
+.Ft int
+.Fn pclose "FILE *stream"
+.Sh 解説
+.Fn popen
+関数は、双方向パイプフォークを作成し、シェルを起動してプロセスを
+.Dq 開き
+ます。
+親プロセスで事前に
+.Fn popen
+を呼び出して開いたストリームは、
+新しい子プロセスによってクローズされます。
+以前の
+.Fn popen
+は単方向のパイプで実装されていたため、
+.Fn popen
+の多くの実装は、
+読み書きの両方ではなく、
+.Fa type
+引数が読込もしくは書込のどちらかを指定すること
+だけ許可していました。
+現在の
+.Fn popen
+は双方向パイプで実装しているので、
+.Fa type
+引数で双方向データフローを要求できます。
+.Fa type
+引数はヌル文字で終わる文字列のポインタで、
+読取りの場合は
+.Ql r
+、書込みの場合は
+.Ql w
+、読み書きの場合は
+.Ql r+
+である必要があります。
+.Pp
+.Fa command
+引数は、シェルコマンドラインを含む、
+ヌル文字で終了する文字列のポインタです。
+このコマンドは、
+.Fl c
+フラグで
+.Pa /bin/sh
+に渡されます。解釈がある場合、シェルで実行されます。
+.Pp
+.Fn popen
+の戻り値は通常の標準
+.Tn 入出力
+とあらゆる点で同等のものです。
+ただし、閉じるときは、
+.Fn fclose
+ではなく
+.Fn pclose
+を使わなければなりません。
+このようなストリームに書込むと、
+コマンドの標準入力に書込まれます。
+コマンドの標準出力は、
+そのコマンド自体で変更しないかぎり、
+.Fn popen
+で呼び出したプロセスのものと同じです。
+反対に、
+.Fn popen
+で
+.Dq 開かれた
+ストリームからの読込みは、
+コマンドの標準出力から読込まれます。
+コマンドの標準入力は
+.Fn popen
+を呼び出したプロセスのものと同じです。
+.Pp
+出力
+.Fn popen
+ストリームは、デフォルトで完全にバッファ
+されることに注意してください。
+.Pp
+.Fn pclose
+関数は、結び付けられたプロセスの終了を待機し、
+.Fn wait4
+が戻すコマンドの終了ステータスを返します。
+.Sh 戻り値
+.Fn popen
+関数は、
+.Xr fork 2
+か
+.Xr pipe 2
+でエラーが発生した場合、またはメモリを割り当てられない場合は
+.Dv ヌル
+を戻します。
+.Pp
+.Fn pclose
+関数は、
+.Fa ストリーム
+が
+.Fn popen
+で
+.Dq 開いた
+コマンドと
+結び付いていなかった場合、または
+.Fa ストリーム
+がすでに
+.Fn pclose
+で
+.Dq 閉じている
+場合、あるいは
+.Xr wait4
+でエラーが発生した場合は \-1 を戻します。
+.Sh エラー
+.Fn popen
+関数は、信頼性のある
+.Va errno
+を設定しません。
+.Sh 関連項目
+.Xr sh 1 ,
+.Xr fork 2 ,
+.Xr pipe 2 ,
+.Xr wait4 2 ,
+.Xr fclose 3 ,
+.Xr fflush 3 ,
+.Xr fopen 3 ,
+.Xr stdio 3 ,
+.Xr system 3
+.Sh バグ
+読取り用に開いたコマンドの標準入力は、
+.Fn popen
+を呼び出したプロセスとシークオフセットを共有するので、
+オリジナルプロセスがバッファ読取りを実行すると、
+コマンドの入力位置が予想どおりにならないことがあります。
+同様に、書込み用に開いたコマンドの出力は、
+オリジナルプロセスのものと混ざることがあります。後者は、
+.Fn popen
+の前に
+.Xr fflush 3
+を呼び出すことで回避できます。
+.Pp
+シェルを実行しないことには、それが実行できないコマンドのシェル
+なのか、すぐに終了してしまうコマンドか、区別できません。
+終了ステータスの 127 のみがヒントになります。
+.Pp
+.Fn popen
+の引数は常に
+.Xr sh 1
+を呼び出し、
+.Xr csh 1
+は呼び出しません。
+.Sh 歴史
+.Fn popen
+関数と
+.Fn pclose
+関数は、
+.At v7
+で登場しました。
+.Pp
+双方向機能は、
+.Fx 2.2.6
+で追加されました。