b3aee9efe3
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>
167 lines
4.5 KiB
Groff
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
|