doc/ja_JP.eucJP/man/man3/uucplock.3
SUZUKI Koichi 8a72894489 Fix typos.
Sync with the original version.
Unify some japanese words.

Submitted by:  kano@na.rim.or.jp
2004-10-11 08:23:01 +00:00

183 lines
5 KiB
Groff

.\"
.\" Copyright (c) 1996 Brian Somers <brian@awfulhak.demon.co.uk>
.\"
.\" 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 DEVELOPERS ``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 DEVELOPERS 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/lib/libutil/uucplock.3,v 1.13.2.4 2001/12/17 10:08:32 ru Exp %
.\" $FreeBSD$
.\" "
.Dd March 30, 1997
.Os
.Dt UUCPLOCK 3
.Sh 名称
.Nm uu_lock ,
.Nm uu_unlock ,
.Nm uu_lockerr
.Nd シリアルデバイスの制御権の取得および放棄
.Sh ライブラリ
.Lb libutil
.Sh 書式
.In sys/types.h
.In libutil.h
.Ft int
.Fn uu_lock "const char *ttyname"
.Ft int
.Fn uu_lock_txfr "const char *ttyname" "pid_t pid"
.Ft int
.Fn uu_unlock "const char *ttyname"
.Ft const char *
.Fn uu_lockerr "int uu_lockresult"
.Sh 解説
.Fn uu_lock
関数は、渡された
.Fa ttyname
により与えられる接尾辞を持つ
.Pa /var/spool/lock/LCK..
という名前のロックファイルを作成しようと試みます。
そのファイルがすでに存在する場合は、ロックするプログラムのプロセス ID が
そのファイルに入っているものと見なします。
.Pp
そのファイルがまだ存在していないか、またはロックファイルの中にあった
プロセス ID により与えられる所有側プロセスがもはや動いていない場合は、
.Fn uu_lock
関数はファイルに自身のプロセス ID を書込んで成功を返します。
.Pp
.Fn uu_lock_txfr
関数は、ロック所有権をもう一つのプロセスに移転します。
.Fn uu_lock
関数がその前に成功している必要があります。
.Pp
.Fn uu_unlock
関数は、与えられた
.Fa ttyname
について
.Fn uu_lock
によって作成されたロックファイルを削除します。
.Fn uu_unlock
を呼び出す前には、
.Fn uu_lock
が成功していなければならないことに注意してください。
.Pp
.Fn uu_lockerr
関数は、
.Fn uu_lock
から返されるものと同様に、エラー
.Fa uu_lockresult
を表現するエラーストリングを返します。
.Sh 戻り値
.Fn uu_unlock
関数は、成功すると 0、失敗すると -1 を返します。
.Pp
.Fn uu_lock
関数は、次のいずれかの値を返します:
.Pp
.Dv UU_LOCK_INUSE :
ロックは別のプロセスによって使われています。
.Pp
.Dv UU_LOCK_OK :
ロックの作成に成功しました。
.Pp
.Dv UU_LOCK_OPEN_ERR :
.Xr open 2
はロックファイルを開くことができません。
.Pp
.Dv UU_LOCK_READ_ERR :
.Xr read 2
は、ロックファイルを読み取ることができません。
.Pp
.Dv UU_LOCK_CREAT_ERR :
.Xr creat 2
は、一時ロックファイルを
作成することができません。
.Pp
.Dv UU_LOCK_WRITE_ERR :
.Xr write 2
の呼び出しによって、現在のプロセス ID を
ロックファイルに書込むことができません。
.Pp
.Dv UU_LOCK_LINK_ERR :
.Xr link 2
は、一時ロックファイルをリンクすることができません。
.Pp
.Dv UU_LOCK_TRY_ERR :
ロックする試みは、5 回の試行の後に失敗しました。
.Pp
.Dv UU_LOCK_OK
の値が
.Fn uu_lockerr
に渡された場合は、空のストリングが
返されます。それ以外の場合は、失敗した理由を示すストリングが返されます。
.Fn uu_lockerr
は、現在の
.Va errno
の値を使って正確なエラーを判断します。
.Fn uu_lock
を呼び出してから
.Fn uu_lockerr
を呼び出すまでの間に
.Va errno
が変化してしまわないように注意してください。
.Pp
.Fn uu_lock_txfr
関数は、次のいずれかの値を返します:
.Pp
.Dv UU_LOCK_OK :
転送は成功しました。指定したプロセスが現在デバイスロックを
持っています。
.Pp
.Dv UU_LOCK_OWNER_ERR :
現在のプロセスは、指定されたデバイスについての
ロックをすでに持ってはいません。
.Pp
.DV UU_LOCK_WRITE_ERR :
.Xr write 2
の呼び出しによっては、新しいプロセス ID を
ロックファイルに書込むことができません。
.Sh エラー
.Fn uu_lock
関数が上のエラー値のいずれかを返した場合は、グローバル値
.Va errno
を使ってその理由を判断することができます。詳しくは、該当する
マニュアルページを参照してください。
.Pp
.Fn uu_unlock
関数は、ロックファイルが削除できなかった理由を示す
グローバル変数
.Va errno
を設定します。詳しくは、
.Xr unlink 2
についての解説を参照してください。
.Sh 関連項目
.Xr lseek 2 ,
.Xr open 2 ,
.Xr read 2 ,
.Xr write 2
.Sh バグ
失効ロックを残したプログラムと同じプロセス ID が新しいプロセスに割り
当てられた場合は、失効したロックが失効を認識されない可能性があります。
.Pp
呼び出しプロセスは、
.Pa /var/spool/lock
ディレクトリに対する書込み許可を
持っていなければなりません。このディレクトリの許可がロックされる
シリアルデバイスの許可と同じであることを保証する仕組みは備えていません。