ttylock , ttywait , ttyunlock 或 ttylocked 子例程
用途
控制 tty 锁定功能。
库
标准 C 库 (libc.a)
语法
int ttylock ( DeviceName)
char *DeviceName;
char *DeviceName;
int ttywait (DeviceName)
char *DeviceName; int ttyunlock (DeviceName)
char *DeviceName; int ttylocked (DeviceName)
char *DeviceName;描述
ttylock子程序会在/etc/locks目录中创建LCK..DeviceName文件,并在该文件中写入调用进程的进程 ID。 如果存在LCK..DeviceName,且 ID 包含在该文件中的进程处于活动状态,则ttylock子程序将返回错误。
有一些程序 (如 uucp 和 connect ) 在 /etc/locks 目录中创建 tty 锁定。 这些程序遵循的约定是使用自变量 DeviceName 调用 ttylock 子例程,以锁定 /dev/DeviceName 文件。 此约定必须由 蒂洛克 子例程的所有调用者遵循,以使锁定机制起作用。
ttywait子程序会阻塞调用进程,直到与DeviceName 相关的锁定文件(即 /etc/locks/LCK..DeviceName文件)被删除。
ttyunlock 子例程除去锁定文件 /etc/locks/LCK ..DeviceName(如果它由当前进程挂起)。
ttylocked 子例程检查锁定文件 /etc/locks/LCK ..DeviceName是否存在以及创建锁定文件的进程是否仍处于活动状态。 如果进程不再处于活动状态,那么将除去锁文件。
参数
| 项 | 描述 |
|---|---|
| DeviceName | 指定设备名称。 |
返回值
成功完成后, 蒂洛克 子例程将返回值 0。 否则,返回值为-1。
如果没有进程在设备上锁定,那么 特德锁定 子例程返回值 0。 否则,返回值为-1。
示例
- 要为 /dev/tty0创建锁定,请使用以下语句:
rc = ttylock("tty0"); - 要锁定 /dev/tty0 设备并等待锁定被清除 (如果存在) ,请使用以下语句:
if (ttylock("tty0")) ttywait("tty0"); rc = ttylock("tty0"); - 要除去先前对 蒂洛克 子例程的调用所创建的设备 /dev/tty0 的锁定文件,请使用以下语句:
ttyunlock("tty0"); - 要检查 /dev/tty0上的锁定,请使用以下语句:
rc = ttylocked("tty0");