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。

  • 相关阅读:
    转: MySQL 赋予用户权限(grant %-远程和localhost-本地区别)
    修改Apache的最大连接数
    正向代理与反向代理的区别【Nginx读书笔记】
    mysql加单引号和不加单引号的性能比较
    mysql保存数据提示1366 Incorrect string value: ‘xF0x9Fx98x8AxF0x9F…’ 解决
    Mysql外键约束设置使用方法
    MYSQL分库分表和不停机更改表结构
    Hive SQL 常用日期
    CountDownLatch学习
    Exchanger学习
  • 原文地址:https://www.cnblogs.com/nufangrensheng/p/3578019.html
Copyright © 2011-2022 走看看