ttylock , ttywait , ttyunlock 或 ttylocked 子例程

用途

控制 tty 锁定功能。

标准 C 库 (libc.a)

语法

int ttylock ( 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子程序将返回错误。

有一些程序 (如 uucpconnect ) 在 /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。

示例

  1. 要为 /dev/tty0创建锁定,请使用以下语句:
    rc = ttylock("tty0");
  2. 要锁定 /dev/tty0 设备并等待锁定被清除 (如果存在) ,请使用以下语句:
    if (ttylock("tty0"))
        ttywait("tty0");
    rc = ttylock("tty0");
  3. 要除去先前对 蒂洛克 子例程的调用所创建的设备 /dev/tty0 的锁定文件,请使用以下语句:
    ttyunlock("tty0");
  4. 要检查 /dev/tty0上的锁定,请使用以下语句:
    rc = ttylocked("tty0");