総合手引 | セクション 3 | English | オプション |
#include <sys/types.h>
#include <libutil.h>
そのファイルがまだ存在していないか、またはロックファイルの中にあった プロセス ID により与えられる所有側プロセスがもはや動いていない場合は、 uu_lock() 関数はファイルに自身のプロセス ID を書込んで成功を返します。
uu_lock_txfr() 関数は、ロック所有権をもう一つのプロセスに移転します。 uu_lock() 関数がその前に成功している必要があります。
uu_unlock() 関数は、与えられた ttyname について uu_lock() によって作成されたロックファイルを削除します。 uu_unlock() を呼び出す前には、 uu_lock() が成功していなければならないことに注意してください。
uu_lockerr() 関数は、 uu_lock() から返されるものと同様に、エラー uu_lockresult を表現するエラーストリングを返します。
uu_lock() 関数は、次のいずれかの値を返します:
UU_LOCK_INUSE: ロックは別のプロセスによって使われています。
UU_LOCK_OK: ロックの作成に成功しました。
UU_LOCK_OPEN_ERR: open(2) はロックファイルを開くことができません。
UU_LOCK_READ_ERR: read(2) は、ロックファイルを読み取ることができません。
UU_LOCK_CREAT_ERR: creat(2) は、一時ロックファイルを 作成することができません。
UU_LOCK_WRITE_ERR: write(2) の呼び出しによって、現在のプロセス ID を ロックファイルに書込むことができません。
UU_LOCK_LINK_ERR: link(2) は、一時ロックファイルをリンクすることができません。
UU_LOCK_TRY_ERR: ロックする試みは、5 回の試行の後に失敗しました。
UU_LOCK_OK の値が uu_lockerr() に渡された場合は、空のストリングが 返されます。それ以外の場合は、失敗した理由を示すストリングが返されます。 uu_lockerr() は、現在の errno の値を使って正確なエラーを判断します。 uu_lock() を呼び出してから uu_lockerr() を呼び出すまでの間に errno が変化してしまわないように注意してください。
uu_lock_txfr() 関数は、次のいずれかの値を返します:
UU_LOCK_OK: 転送は成功しました。指定したプロセスが現在デバイスロックを 持っています。
UU_LOCK_OWNER_ERR: 現在のプロセスは、指定されたデバイスについての ロックをすでに持ってはいません。
write(2) の呼び出しによっては、新しいプロセス ID を ロックファイルに書込むことができません。
uu_unlock() 関数は、ロックファイルが削除できなかった理由を示す グローバル変数 errno を設定します。詳しくは、 unlink(2) についての解説を参照してください。
呼び出しプロセスは、 /var/spool/lock ディレクトリに対する書込み許可を 持っていなければなりません。このディレクトリの許可がロックされる シリアルデバイスの許可と同じであることを保証する仕組みは備えていません。
UUCPLOCK (3) | March 30, 1997 |
総合手引 | セクション 3 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | A child of 5 could understand this! Fetch me a child of 5. | ” |