ioctl.cc

来自「cygwin, 著名的在win32下模拟unix操作系统的东东」· CC 代码 · 共 66 行

CC
66
字号
/* ioctl.cc: ioctl routines.   Copyright 1996, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.   Written by Doug Evans of Cygnus Support   dje@cygnus.comThis file is part of Cygwin.This software is a copyrighted work licensed under the terms of theCygwin license.  Please consult the file "CYGWIN_LICENSE" fordetails. */#include "winsup.h"#include <sys/ioctl.h>#include <errno.h>#include "cygerrno.h"#include "security.h"#include "fhandler.h"#include "path.h"#include "dtable.h"#include "cygheap.h"#include "sigproc.h"#include <sys/termios.h>extern "C" intioctl (int fd, int cmd, ...){  sigframe thisframe (mainthread);  cygheap_fdget cfd (fd);  if (cfd < 0)    return -1;  /* check for optional mode argument */  va_list ap;  va_start (ap, cmd);  char *argp = va_arg (ap, char *);  va_end (ap);  debug_printf ("fd %d, cmd %x", fd, cmd);  int res;  if (cfd->is_tty () && cfd->get_device () != FH_PTYM)    switch (cmd)      {	case TCGETA:	  res = tcgetattr (fd, (struct termios *) argp);	  goto out;	case TCSETA:	  res = tcsetattr (fd, TCSANOW, (struct termios *) argp);	  goto out;	case TCSETAW:	  res = tcsetattr (fd, TCSADRAIN, (struct termios *) argp);	  goto out;	case TCSETAF:	  res = tcsetattr (fd, TCSAFLUSH, (struct termios *) argp);	  goto out;      }  res = cfd->ioctl (cmd, argp);out:  debug_printf ("returning %d", res);  return res;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?