您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ unlockpt函数代码示例

51自学网 2021-06-03 09:11:15
  C++
这篇教程C++ unlockpt函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中unlockpt函数的典型用法代码示例。如果您正苦于以下问题:C++ unlockpt函数的具体用法?C++ unlockpt怎么用?C++ unlockpt使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了unlockpt函数的26个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: start

    bool start()    {        fdMaster = getpt();        if (fdMaster < 0) {            LOGE("Error %d on getpt()", errno);            return false;        }        if (unlockpt(fdMaster) != 0) {            LOGE("Error %d on unlockpt()", errno);            return false;        }        pid = fork();        if (pid < 0) {            LOGE("fork failed for pty, error %d", errno);            close(fdMaster);            pid = 0;            return false;        } else if (pid) {            // child started, now someone needs to periodically read from fdMaster            // and write it to the terminal            // this currently works through gui.cpp calling terminal_pty_read below            g_pty_fd = fdMaster;            return true;        } else {            int fdSlave = open(ptsname(fdMaster), O_RDWR);            close(fdMaster);            runSlave(fdSlave);        }        // we can't get here        LOGE("impossible error in pty");        return false;    }
开发者ID:Caio99BR,项目名称:DualBootPatcher,代码行数:34,


示例2: test6

/* * test hangup semantics */inttest6(void){	static int masterfd;	static int slavefd;	char *slavename;	struct termios termios;	masterfd = open(MASTERCLONE, O_RDWR);	if (masterfd < 0) {		tst_resm(TBROK,"%s",MASTERCLONE);		tst_exit();	}	slavename = ptsname(masterfd);	if (slavename == NULL) {		tst_resm(TBROK|TERRNO, "ptsname() call failed");		tst_exit();	}	if (grantpt(masterfd) != 0) {		tst_resm(TBROK|TERRNO, "grantpt() call failed");		tst_exit();	}	if (unlockpt(masterfd) != 0) {		tst_resm(TBROK,"unlockpt() call failed");		tst_exit();	}	if ((slavefd = open(slavename, O_RDWR)) < 0) {		tst_resm(TBROK,"Could not open %s",slavename);		tst_exit();	}	if (ioctl(slavefd, TCGETS, &termios) != 0) {		tst_resm(TFAIL,"TCGETS");		tst_exit();	}	termios.c_cflag &= ~CBAUD;	termios.c_cflag |= B0&CBAUD;	if (ioctl(slavefd, TCSETS, &termios) != 0) {		tst_resm(TFAIL,"TCGETS");		tst_exit();	}	if (close(slavefd) != 0) {		tst_resm(TBROK,"close");		tst_exit();	}	if (close(masterfd) != 0) {		tst_resm(TBROK,"close");		tst_exit();	}	tst_resm(TPASS,"test6");	/** NOT REACHED **/	return 0;}
开发者ID:joyforu,项目名称:android-ltp-ndk,代码行数:63,


示例3: open_pty_pair

int open_pty_pair(int *masterp, int *slavep){	int master, slave;	char name[1024];	master = getpt();	if (master < 0) {		return 0;	}	if (grantpt(master) < 0 || unlockpt(master) < 0) {		close(master);		return 0;	}	if (ptsname_r(master, name, sizeof(name)) < 0) {		close(master);		return 0;	}	slave = open(name, O_RDWR);	if (slave < 0) {		close(master);		return 0;	}	*masterp = master;	*slavep = slave;	return 1;}
开发者ID:rahimazizarab,项目名称:sand-dyn75,代码行数:30,


示例4: ptym_open

intptym_open(char *pts_name){	char	*ptr;	int		fdm;	strcpy(pts_name, "/dev/ptmx");	/* in case open fails */	if ( (fdm = open(pts_name, O_RDWR)) < 0)		return(-1);	if (grantpt(fdm) < 0) {		/* grant access to slave */		close(fdm);		return(-2);	}	if (unlockpt(fdm) < 0) {	/* clear slave's lock flag */		close(fdm);		return(-3);	}	if ( (ptr = ptsname(fdm)) == NULL) {	/* get slave's name */		close(fdm);		return(-4);	}	strcpy(pts_name, ptr);	/* return name of slave */	return(fdm);			/* return fd of master */}
开发者ID:4myPAL,项目名称:PuTTYTray,代码行数:26,


示例5: test_ebadf

static inttest_ebadf (void){  int fd, ret, err;  fd = posix_openpt (O_RDWR);  if (fd == -1)    {      printf ("posix_openpt(O_RDWR) failed/nerrno %d (%s)/n",	      errno, strerror (errno));      /* We don't fail because of this; maybe the system does not have	 SUS pseudo terminals.  */      return 0;    }  unlockpt (fd);  close (fd);  ret = grantpt (fd);  err = errno;  if (ret != -1 || err != EBADF)    {      printf ("grantpt(): expected: return = %d, errno = %d/n", -1, EBADF);      printf ("           got: return = %d, errno = %d/n", ret, err);      return 1;    }  return 0;}
开发者ID:AdvancedC,项目名称:glibc,代码行数:27,


示例6: pty_open_master

static intpty_open_master (char *pty_name){    char *slave_name;    int pty_master;#ifdef HAVE_POSIX_OPENPT    pty_master = posix_openpt (O_RDWR);#elif defined HAVE_GETPT    /* getpt () is a GNU extension (glibc 2.1.x) */    pty_master = getpt ();#elif defined IS_AIX    strcpy (pty_name, "/dev/ptc");    pty_master = open (pty_name, O_RDWR);#else    strcpy (pty_name, "/dev/ptmx");    pty_master = open (pty_name, O_RDWR);#endif    if (pty_master == -1)        return -1;    if (grantpt (pty_master) == -1      /* Grant access to slave */        || unlockpt (pty_master) == -1  /* Clear slave's lock flag */        || !(slave_name = ptsname (pty_master)))        /* Get slave's name */    {        close (pty_master);        return -1;    }    strcpy (pty_name, slave_name);    return pty_master;}
开发者ID:mooffie,项目名称:mc,代码行数:32,


示例7: io_init

int io_init(void){	struct termios io;	if(!iobuffer) {		iobuffer = malloc(IOBSZ);		head = tail = 0;	}	// init serial	bzero(&io, sizeof(struct termios));	io.c_cflag |= CLOCAL | CREAD;	io.c_cflag &= ~CSIZE;	io.c_cflag |= CS8;	io.c_cflag &= ~PARENB;	io.c_cflag &= ~CSTOPB;	cfsetispeed(&io, B115200);	cfsetospeed(&io, B115200);	iofd = open(TTYDEV, O_RDWR | O_NOCTTY | O_NDELAY);	unlockpt(iofd);	grantpt(iofd);	if(iofd >= 0) {		tcflush(iofd, TCIFLUSH);		if(tcsetattr(iofd, TCSANOW, &io) != 0)			return -2;	}	return iofd;}
开发者ID:antiwinter,项目名称:slt.handler.emu,代码行数:32,


示例8: get_pty

/* allocate one pty/tty pair (Unix 98 way) */static int get_pty(char *tty_buf, int tty_buf_size){#ifdef ZIPIT_Z2    return get_pty_old(tty_buf, tty_buf_size);#else    int fd;    char *str;    fd = posix_openpt(O_RDWR | O_NOCTTY);    if (fd < 0) {        return get_pty_old(tty_buf, tty_buf_size);    }    if (grantpt(fd) < 0)        goto fail;    if (unlockpt(fd) < 0)        goto fail;    str = ptsname(fd);    if (!str)        goto fail;    pstrcpy(tty_buf, tty_buf_size, str);    return fd; fail:    close(fd);    return -1;#endif}
开发者ID:deeice,项目名称:Qemacs,代码行数:27,


示例9: get_pty

intget_pty(int *master, int *slave, char *name, size_t namesz, uid_t ttyuid){    char *line;    *master = posix_openpt(O_RDWR|O_NOCTTY);    if (*master == -1)	return 0;    (void) grantpt(*master); /* may fork */    if (unlockpt(*master) != 0) {	close(*master);	return 0;    }    line = ptsname(*master);    if (line == NULL) {	close(*master);	return 0;    }    *slave = open(line, O_RDWR|O_NOCTTY, 0);    if (*slave == -1) {	close(*master);	return 0;    }# if defined(I_PUSH) && !defined(_AIX)    ioctl(*slave, I_PUSH, "ptem");	/* pseudo tty emulation module */    ioctl(*slave, I_PUSH, "ldterm");	/* line discipline module */# endif    (void) chown(line, ttyuid, -1);    strlcpy(name, line, namesz);    return 1;}
开发者ID:CVi,项目名称:sudo,代码行数:32,


示例10: _openpty

static int _openpty(int *amaster, int *aslave) {    int master = -1, slave = -1;    char *slave_name;    static const char *fn[] = { "/dev/ptmx", "/dev/ptc", 0 };    long long i;    for (i = 0; fn[i]; ++i) {        master = open(fn[i], O_RDWR | O_NOCTTY);        if (master != -1) break;    }    if (master == -1) return -1;    if (grantpt(master) == -1) { close(master); return -1; }    if (unlockpt(master) == -1) { close(master); return -1; }    slave_name = ptsname(master);    if (!slave_name) { close(master); return -1; }    slave = open(slave_name, O_RDWR | O_NOCTTY);    if (slave == -1) { close(master); return -1; }#if defined(sun) || defined(__hpux)    ioctl(slave, I_PUSH, "ptem");    ioctl(slave, I_PUSH, "ldterm");#endif#if defined(sun)    ioctl(slave, I_PUSH, "ttcompat");#endif    if (amaster) *amaster = master;    if (aslave)  *aslave  = slave;    return 0;}
开发者ID:LlsDimple,项目名称:tinyssh,代码行数:31,


示例11: _vte_pty_unlockpt

static gboolean_vte_pty_unlockpt(int fd,                  GError **error){        int rv;#ifdef HAVE_UNLOCKPT	rv = unlockpt(fd);        if (rv != 0) {                int errsv = errno;                g_set_error(error, VTE_PTY_ERROR, VTE_PTY_ERROR_PTY98_FAILED,                            "%s failed: %s", "unlockpt", g_strerror(errsv));                errno = errsv;                return FALSE;        }        return TRUE;#elif defined(TIOCSPTLCK)	int zero = 0;	rv = ioctl(fd, TIOCSPTLCK, &zero);        if (rv != 0) {                int errsv = errno;                g_set_error(error, VTE_PTY_ERROR, VTE_PTY_ERROR_PTY98_FAILED,                            "%s failed: %s", "ioctl(TIOCSPTLCK)", g_strerror(errsv));                errno = errsv;                return FALSE;        }        return TRUE;#else#error no unlockpt implementation for this platform#endif}
开发者ID:gbl,项目名称:vte,代码行数:30,


示例12: handle_signals_resets_terminal

void handle_signals_resets_terminal(void){	int status, masterfd;	char* slavedevice = NULL;	struct termios test_flags;	pid_t child_pid;	masterfd = posix_openpt(O_RDWR|O_NOCTTY);	if (masterfd == -1		|| grantpt (masterfd) == -1		|| unlockpt (masterfd) == -1		|| (slavedevice = ptsname (masterfd)) == NULL)		CU_FAIL_FATAL("Could not create pty");	terminal_fildes = open(slavedevice, O_RDWR|O_NOCTTY);	tcgetattr(terminal_fildes, &orig_flags);	new_flags = orig_flags;	new_flags.c_lflag &= ~ECHO;	tcsetattr(terminal_fildes, TCSANOW, &new_flags);	terminal_needs_reset = 1;	if((child_pid = fork()) == 0)	{		freerdp_handle_signals();		raise(SIGINT);	}	while(wait(&status) != -1);	tcgetattr(terminal_fildes, &test_flags);	CU_ASSERT_EQUAL(orig_flags.c_lflag, test_flags.c_lflag);	close(masterfd);	close(terminal_fildes);}
开发者ID:ArthurGodoy,项目名称:FreeRDP,代码行数:33,


示例13: unlockpt

/***Unlock a pseudoterminal master/slave pair@function unlockpt@int fd descriptor returned by openpt@treturn[1] int `0`, if successful@return[2] nil@treturn[2] string error message@treturn[2] int errnum@see unlockpt(3)@see openpt@see ptsname@see grantpt*/static intPunlockpt(lua_State *L){	int fd=checkint(L, 1);	checknargs(L, 1);	return pushresult(L, unlockpt(fd), "unlockpt");}
开发者ID:istr,项目名称:luaposix,代码行数:20,


示例14: OpenPTY

    intOpenPTY(char **ttyn){    int		f;    char	*m;    char	*(ptsname(int));    int		unlockpt(int);    int		grantpt(int);    RETSIGTYPE (*sigcld) SIGPROTOARG;    /* used for opening a new pty-pair: */    static char TtyName[32];    if ((f = open("/dev/ptmx", O_RDWR | O_NOCTTY | O_EXTRA, 0)) == -1)	return -1;    /*     * SIGCHLD set to SIG_DFL for grantpt() because it fork()s and     * exec()s pt_chmod     */    sigcld = signal(SIGCHLD, SIG_DFL);    if ((m = ptsname(f)) == NULL || grantpt(f) || unlockpt(f))    {	signal(SIGCHLD, sigcld);	close(f);	return -1;    }    signal(SIGCHLD, sigcld);    vim_strncpy((char_u *)TtyName, (char_u *)m, sizeof(TtyName) - 1);    initmaster(f);    *ttyn = TtyName;    return f;}
开发者ID:KamarajuKusumanchi,项目名称:vim,代码行数:32,


示例15: allocate_pty

intallocate_pty(int *master, int *slave) {#if defined(HAVE_OPENPTY) || (defined(HAVE_DECL_OPENPTY) && HAVE_DECL_OPENPTY != 0)  if(openpty(master, slave, NULL, NULL, NULL)) return -1;#else  /* STREAMS... sigh */  char   *slavename;  extern char *ptsname();  *master = open("/dev/ptmx", O_RDWR);  /* open master */  if(*master < 0) return -1;  grantpt(*master);                     /* change permission of   slave */  unlockpt(*master);                    /* unlock slave */  slavename = ptsname(*master);         /* get name of slave */  *slave = open(slavename, O_RDWR);    /* open slave */  if(*slave < 0) {    close(*master);    *master = -1;    return -1;  }  /* This is a bit backwards as we using the PTY backwards.   * We want to make the master a tty instead of the slave... odd, I know.   */  ioctl(*master, I_PUSH, "ptem");       /* push ptem */  ioctl(*master, I_PUSH, "ldterm");     /* push ldterm*/#endif  if(eventer_set_fd_nonblocking(*master)) return -1;  noitL(noit_debug, "allocate_pty -> %d,%d/n", *master, *slave);  return 0;}
开发者ID:venturaville,项目名称:reconnoiter,代码行数:30,


示例16: get_pty

int get_pty(Term *term){   /* do we need this here? */   /* extern char *ptsname(); */   int fd;   char *ptydev;   if((fd = getpt()) >= 0)     {	if(grantpt(fd) == 0 && unlockpt(fd) == 0)	  {	     ptydev = ptsname(fd);	     if((term->slave.sys = open(ptydev, O_RDWR | O_NOCTTY)) < 0)	       {		  fprintf(stderr, "Error opening slave pty: %m/n");		  return -1;	       }	     fcntl(fd, F_SETFL, O_NDELAY);	     return fd;	  }	close(fd);     }   fprintf(stderr, "Can't open a pseudo-tty/n");   return -1;}
开发者ID:playya,项目名称:Enlightenment,代码行数:25,


示例17: get_pty

int get_pty(void){    struct grantpt_info info;    int fd, err;    fd = open("/dev/ptmx", O_RDWR);    if (fd < 0) {        err = -errno;        printk(UM_KERN_ERR "get_pty : Couldn't open /dev/ptmx - "               "err = %d/n", errno);        return err;    }    info.fd = fd;    initial_thread_cb(grantpt_cb, &info);    if (info.res < 0) {        err = -info.err;        printk(UM_KERN_ERR "get_pty : Couldn't grant pty - "               "errno = %d/n", -info.err);        goto out;    }    if (unlockpt(fd) < 0) {        err = -errno;        printk(UM_KERN_ERR "get_pty : Couldn't unlock pty - "               "errno = %d/n", errno);        goto out;    }    return fd;out:    close(fd);    return err;}
开发者ID:Kenepo,项目名称:roots_kk_lge_msm8974,代码行数:34,


示例18: open_pty

int open_pty() {  int fd = check("posix_openpt", posix_openpt(O_RDWR | O_NOCTTY));  check("grantpt",  grantpt(fd));  check("unlockpt", unlockpt(fd));  return fd;}
开发者ID:Altonymous,项目名称:drip,代码行数:7,


示例19: GUCEF_pty_open

intGUCEF_pty_open( int* fdm, int* fds ){    int masterfd, slavefd;    char *slavedevice;    /*     *  O_RDWR = Open the device for both reading and writing. It is usual to specify this flag.     *  O_NOCTTY = Do not make this device the controlling terminal for the process.     */    masterfd = posix_openpt( O_RDWR | O_NOCTTY );    if ( masterfd == -1 ||         grantpt (masterfd) == -1 ||         unlockpt (masterfd) == -1 ||         (slavedevice = ptsname (masterfd)) == NULL)        return 1;    slavefd = open(slavedevice, O_RDWR|O_NOCTTY);    if (slavefd < 0)        return 1;    /* success */    *fdm = masterfd;    *fds = slavefd;    return 0;}
开发者ID:LiberatorUSA,项目名称:GUCEF,代码行数:27,


示例20: openpty

int openpty(int* master, int* slave, char* name, const termios* t, const winsize* ws) {  *master = getpt();  if (*master == -1) {    return -1;  }  if (grantpt(*master) == -1 || unlockpt(*master) == -1) {    close(*master);    return -1;  }  char buf[32];  if (name == NULL) {    name = buf;  }  if (ptsname_r(*master, name, sizeof(buf)) != 0) {    close(*master);    return -1;  }  *slave = open(name, O_RDWR|O_NOCTTY);  if (*slave == -1) {    close(*master);    return -1;  }  if (t != NULL) {    tcsetattr(*slave, TCSAFLUSH, t);  }  if (ws != NULL) {    ioctl(*slave, TIOCSWINSZ, ws);  }  return 0;}
开发者ID:daddy366,项目名称:anarchy-bionic,代码行数:35,


示例21: ptym_open

static intptym_open(char *pts_name){    char	*ptr;    int		fdm;    strcpy(pts_name, "/dev/ptmx");    if ((fdm = open(pts_name, O_RDWR)) < 0)	return(-1);    if (grantpt(fdm) < 0) {	close(fdm);	return(-1);    }    if (unlockpt(fdm) < 0) {	close(fdm);	return(-1);    }    if ((ptr = ptsname(fdm)) == NULL) {	close(fdm);	return(-1);    }    strcpy(pts_name, ptr);    return(fdm);}
开发者ID:LiberatorUSA,项目名称:GUCEF,代码行数:25,


示例22: ptym_open

/* * Allocate pty master (APUE, p. 638). */intptym_open(char *pts_name, size_t namsz){	char *ptr;	int fdm;	strcpy(pts_name, "/dev/ptmx");	if ((fdm = open(pts_name, O_RDWR)) < 0)		return -1;	if (grantpt(fdm) < 0) {		close(fdm);		return -2;	}	if (unlockpt(fdm) < 0) {		close(fdm);		return -3;	}	if ((ptr = ptsname(fdm)) == NULL) {		close(fdm);		return -4;	}	strncpy(pts_name, ptr, namsz);#ifndef	__linux__	if (ioctl(fdm, I_PUSH, "pckt") < 0) {		close(fdm);		return -5;	}#endif	/* !__linux__ */	return fdm;}
开发者ID:Sunshine-OS,项目名称:svr4-userland,代码行数:33,


示例23: ptym_open

int ptym_open(char *pts_name, int pts_namesz){    char *ptr;    int fdm;    /*     * Return the name of the master device so that on failure     * the caller can print an error message. Null terminate     * to handle case where string length > pts_namesz.     */    strncpy(pts_name, "/dev/ptyXY", pts_namesz);    pts_name[pts_namesz - 1] = '/0';    if ((fdm = posix_openpt(O_RDWR)) < 0)        return(-1);    if (grantpt(fdm) < 0) {     /* grant access to slave */        close(fdm);        return(-2);    }    if (unlockpt(fdm) < 0) {    /* clear slave's lock flag */        close(fdm);        return(-3);    }    if ((ptr = ptsname(fdm)) == NULL) {     /* get slave's name */        close(fdm);        return(-4);    }    /*     * Return name of slave. Null terminate to handle     * case where strlen(ptr) > pts_namesz.     */    strncpy(pts_name, ptr, pts_namesz);    pts_name[pts_namesz - 1] = '/0';    return(fdm);    /* return fd of master */}
开发者ID:zhaochao,项目名称:programming-practice,代码行数:35,


示例24: ptym_open

intptym_open(char * pts_name){	int fdm;	char *ptr;	strcpy(pts_name, "/dev/ptmx");	fdm = posix_openpt(O_RDWR);	if (fdm < 0)		return -1;	if (grantpt(fdm) < 0) { /* grant access to slave */		close(fdm);		return -2;	}	if (unlockpt(fdm) < 0) { /* clear slave's lock flag */		close(fdm);		return -3;	}	ptr = ptsname(fdm);	if (ptr == NULL) { /* get slave's name */		close (fdm);		return -4;	}	strcpy(pts_name, ptr); /* return name of slave */	return fdm;            /* return fd of master */}
开发者ID:BjornArnelid,项目名称:cdt,代码行数:26,


示例25: main

int main(void) {	int fdm;	int rc;	// initial	system("ls -l /dev/pts");	fdm = posix_openpt(O_RDWR);	if (fdm < 0) {		perror("posix_openpt");		return 1;	}	rc = grantpt(fdm);	if (rc != 0) {		perror("grantpt");		return 1;	}	rc = unlockpt(fdm);	if (rc != 0) {		perror("unlockpt");		return 1;	}	// final	system("ls -l /dev/pts");	return 0;}
开发者ID:Acidburn0zzz,项目名称:firejail,代码行数:30,


示例26: test_overlap

/* * Check that the given PTY index, which is in use for an old-style PTY, is not * allocated through Unix98 PTY allocation.  This test is not foolproof, but it * does the job well enough. */static voidtest_overlap(int m){    char *tname;    size_t len;    int i, n, fd[MIN_PTYS];    for (i = 0; i < MIN_PTYS; i++) {        if ((fd[i] = posix_openpt(O_RDWR | O_NOCTTY)) < 0)            break; /* out of PTYs */        if (grantpt(fd[i]) < 0) e(0);        if (unlockpt(fd[i]) < 0) e(0);        if ((tname = ptsname(fd[i])) == NULL) e(0);        len = strlen(_PATH_DEV_PTS);        if (strncmp(tname, _PATH_DEV_PTS, strlen(_PATH_DEV_PTS))) e(0);        n = atoi(&tname[len]);        if (n < 0 || n > 9) e(0);        if (m == n) e(0);    }    for (i--; i >= 0; i--)        if (close(fd[i]) < 0) e(0);}
开发者ID:newdispatcher,项目名称:minix,代码行数:30,



注:本文中的unlockpt函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ unmap函数代码示例
C++ unlock_window函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。