申请pty的实例

前段时间实现一个类似PAC的工具,为了实现相关功能需要在代码中实现申请pty。

相信很多人虽然知道pty是什么东西,却从未亲手写过相关代码申请pty。我粘贴自己实现的部分代码并简单注释,希望能对有需要的同学们提供一些帮助。


     #define _XOPEN_SOURCE  // 记得定义此测试宏,否则grantpy等函数不可用
     #include <stdlib.h>

    // Your Code Here

    // 获得pty的master端fd(至于什么pty的master和slave这里不多说了,大家可以去搜搜!)
    int master = getpt();
    if (master < 0) {
        return NULL;
    }

    // 设置flags,这个是我的程序中需要用到的,根据自己的需要设置其flags
    int flags = fcntl(master, F_GETFL, 0);
    if (flags < 0) {
        return NULL;
    }
    flags &= ~O_NONBLOCK; // blocking it
    flags |= FD_CLOEXEC; // close on exec
    if (fcntl(master, F_SETFL, flags) < 0) {
        return NULL;
    }

    // 获得此master对应的slave设备名
    char *slave = ptsname(master);

    // grant and unlock slave
    // 赋予slave设备访问权限,并解锁master设备,只有这样做了才能对slave正常操作。
    if (grantpt(master) != 0 || unlockpt(master) != 0){
        return NULL;
    }
    // Your Code Here

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值