I'm very pleased to announce the release of our new website and documentation using the new toolchain with Hugo and AsciiDoctor. To get more information about the new toolchain please read the FreeBSD Documentation Project Primer[1], Hugo docs[2] and AsciiDoctor docs[3]. Acknowledgment: Benedict Reuschling <bcr@> Glen Barber <gjb@> Hiroki Sato <hrs@> Li-Wen Hsu <lwhsu@> Sean Chittenden <seanc@> The FreeBSD Foundation [1] https://docs.FreeBSD.org/en/books/fdp-primer/ [2] https://gohugo.io/documentation/ [3] https://docs.asciidoctor.org/home/ Approved by: doceng, core
183 lines
5 KiB
Groff
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
|
|
ディレクトリに対する書込み許可を
|
|
持っていなければなりません。このディレクトリの許可がロックされる
|
|
シリアルデバイスの許可と同じであることを保証する仕組みは備えていません。
|