伪终端之打开伪终端设备

各种平台打开伪终端设备的方法有所不同。在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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值