doc/ja_JP.eucJP/man/man9/printf.9
SUZUKI Koichi b3aee9efe3 Catch up with 5.4-Release.
Submitted by: Nobuyuki Koganemaru <n-kogane at syd odn ne jp>
Reviewed by: kano at na rim or jp
             Yoshihiko Sarumaru <mistral at imasy or jp>
2005-07-11 13:46:23 +00:00

167 lines
4.5 KiB
Groff

.\"
.\" Copyright (c) 2001 Andrew R. Reiter
.\" Copyritht (c) 2004 Joerg Wunsch
.\" 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.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
.\"
.\" %FreeBSD: src/share/man/man9/printf.9,v 1.4.2.1 2005/01/23 10:08:45 glebius Exp %
.\"
.\" $FreeBSD$
.Dd August 10, 2004
.Dt PRINTF 9
.Os
.Sh 名称
.Nm printf , uprintf , tprintf , log
.Nd フォーマットされた出力の変換
.Sh 書式
.In sys/types.h
.In sys/systm.h
.Ft int
.Fn printf "const char *fmt" ...
.Ft void
.Fn tprintf "struct proc *p" "int pri" "const char *fmt" ...
.Ft int
.Fn uprintf "const char *fmt" ...
.In sys/syslog.h
.Ft void
.Fn log "int pri" "const char *fmt" ...
.Sh 解説
.Xr printf 9
ファミリの関数は
.Xr printf 3
ファミリの関数と類似しています。
この異なった関数はそれぞれ異なった出力ストリームを使用します。
.Fn uprintf
関数は現在のプロセスが制御している tty に出力しますが、
.Fn printf
はロギングファシリティおよびコンソールに出力します。
.Fn tprintf
関数は
.Fa pri
\-1 でない場合には、プロセス
.Fa p
に関連づけられた tty およびロギングファシリティに出力します。
.Fn log
関数は
.Fa pri
によって示されたログレベルを使用して、
カーネルのロギングファシリティにメッセージを送ります。
.Pp
これらそれぞれの関連した関数は、
.Xr printf 3
と同じ方法で
.Fa fmt
パラメータを使用します。
しかしながら、
.Xr printf 9
は 2 つの他の変換指定子を追加しています。
.Pp
.Cm \&%b
識別子は 2 つの引数を期待します。
.Vt int
および
.Vt "char *"
です。
これらはビットマスクのデコードのため、
レジスタ値と印字マスクとして使用されます。
この印字マスクは 2 つの部分で構成されます。
基数と引数です。
基数値は整数値として表現される出力の基数です。
例えば、\e10 は 8 進数を \e20 は 16 進数を与えます。
引数はビット識別子の並びとして構成されます。
個々のビット識別子はこの識別子が表すビット番号の整数値で始まります。
識別子の残り部分はそのビットの名前を含む文字列です。
この文字列は次のビット識別子の始まりのビット番号、
または最後のビット識別子のために
.Dv NUL
で終端されます。
.Pp
.Cm \&%D
識別子は 16 進ダンプを補助することを意図されています。
.Cm \&%D
これは 2 つの引数を要求します。
.Vt "u_char *"
ポインタおよび
.Vt "char *"
文字列です。
ポインタが指しているメモリは、16 進数で一度に 1 バイト出力されます。
文字列は個々のバイトの間のデリミタとして使用されます。
もし存在すれば、幅ディレクティブが表示するバイト数を指定します。
デフォルトでは、16 バイトのデータが出力されます。
.Pp
.Fn log
関数はその
.Fa pri
引数 (ここは誤解されて
.Sq priority (優先度)
と呼ばれていた) に
.Xr syslog 3
のレベル値の
.Dv LOG_DEBUG
から
.Dv LOG_EMERG
までを使用します。
代わりに、
.Fa pri
\-1 が与えられた場合には、そのメッセージはその前の
.Fn log
の呼び出しによって開始された、最近のログメッセージに追加されます。
これらのメッセージはカーネル自身によって生成されるため、
このファシリティは常に
.Dv LOG_KERN
となります。
.Sh 戻り値
.Fn printf
および
.Fn uprintf
関数は表示された文字数を返します。
.Sh 使用例
この使用例は \&%b および \&%D 変換指定子の使用方法を示しています。
関数
.Bd -literal -offset indent
void
printf_test(void)
{
printf("reg=%b\en", 3, "\e10\e2BITTWO\e1BITONE\en");
printf("out: %4D\en", "AAAA", ":");
}
.Ed
.Pp
は下記の出力を発生させます。
.Bd -literal -offset indent
reg=3<BITTWO,BITONE>
out: 41:41:41:41
.Ed
.Pp
この呼び出し
.Bd -literal -offset indent
log(LOG_DEBUG, "%s%d: been there.\en", sc->sc_name, sc->sc_unit);
.Ed
.Pp
は適切なデバッグメッセージを優先度
.Dq Li kern.debug
でシステムログに追加します。
.Sh 関連項目
.Xr printf 3 ,
.Xr syslog 3