申请pty的实例

来源:互联网 发布:网络诈骗的总结 编辑:程序博客网 时间:2024/05/15 16:44

前段时间实现一个类似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