zoukankan      html  css  js  c++  java
  • 伪终端之打开伪终端设备

    各种平台打开伪终端设备的方法有所不同。在Single UNIX Specification的XSI扩展中包含了很多函数,试图统一这些方法。这些函数的基础是SVR4用于管理基于STREAMS的伪终端的一组函数。

     

    posix_openpt用来打开下一个可用的伪终端主设备,该函数是可移植的。

    #include <stdlib.h>

    #include <fcntl.h>

    int posix_openpt(int oflag);

    返回值:若成功则返回下一个可用的PTY主设备的文件描述符,若出错则返回-1

    参数oflag是一个位屏蔽字,指定如何打开主设备,它类似于open(2)的oflag参数,但是并不支持所有打开标志。对于posix_openpt,我们可以指定O_RDWR, 要求打开主设备进行读、写;可以指定O_NOCTTY以防止主设备成为调用者的控制终端。其他打开标志都会导致未定义的行为。

     

    grantpt函数提供的功能:在伪终端从设备可被使用之前,必须设置它的权限,使得应用程序可以访问它。它把从设备节点的用户ID设置为调用者的实际用户ID, 设置其组ID为一非指定值,通常是可以访问该终端设备的组。将权限设置为:对单个所有者是读写,对组所有者是写(0620)。

    #include <stdlib.h>

    int grantpt(int filedes);

    int unlockpt(int filedes);

    两个函数的返回值: 若成功则返回0,若出错则返回-1

    unlockpt函数用于准予对伪终端从设备的访问,从而允许应用程序打开该设备。阻止其他进程打开从设备,使得建立该设备的应用程序有机会在使用主、从设备之前正确地初始化这些设备。

    注意,在grantpt和unlockpt这两个函数中,文件描述符是与主伪终端设备关联的文件描述符。

     

    ptsname函数用于在给定主伪终端设备的文件描述符时,找到从伪终端设备的路径名。这使应用程序可以独立于给定平台的某种惯例而标识从设备。注意,该函数返回的名字可能存放在静态存储区中,所以以后的调用可能会覆盖它。

    #include <stdlib.h>

    char *ptsname(int filedes);

    返回值:若成功则返回指向PTY从设备名的指针,若出错则返回NULL

     

    详情可参考apue。

  • 相关阅读:
    退役 AFO
    object_id()函数
    DataRow数组根据指定列排序
    窗口函数详解
    窗口函数详细用法
    聚合函数count里面加条件
    C#全局钩子和局部钩子记录
    SqlServer日期时间函数
    SQL中字符串截取、连接、替换等函数的用法
    C# 字符串多行显示、文本换行
  • 原文地址:https://www.cnblogs.com/nufangrensheng/p/3578019.html
Copyright © 2011-2022 走看看