⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 16.html

📁 linux下一些常用的C函数的说明和例子
💻 HTML
字号:
<html>
<head>
<title>Untitled Document</title>
</head>
<body>
<table width="100%">
  <tr> 
    <td width="80" valign="top">  
      <div align="right"><br>
        <font face='宋体' size='2'><a name=linuxc293></a></font> </div>
    </td>
  </tr>
  <tr>
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> <br>
        </font> </div>
    </td>
    <td> <font face='宋体' size='2'> <br>
      getopt(分析命令行参数) </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 相关函数 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> <br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 表头文件 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> #include&lt;unistd.h&gt;<br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 定义函数 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> int getopt(int argc,char * const argv[ ],const 
      char * optstring);<br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 函数说明 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> getopt()用来分析命令行参数。参数argc和argv是由main()传递的参数个数和内容。参数optstring 
      则代表欲处理的选项字符串。此函数会返回在argv 中下一个的选项字母,此字母会对应参数optstring 中的字母。如果选项字符串里的字母后接着冒号“:”,则表示还有相关的参数,全域变量optarg 
      即会指向此额外参数。如果getopt()找不到符合的参数则会印出错信息,并将全域变量optopt设为“?”字符,如果不希望getopt()印出错信息,则只要将全域变量opterr设为0即可。<br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 返回值 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> 如果找到符合的参数则返回此参数字母,如果参数不包含在参数optstring 的选项字母则返回“?”字符,分析结束则返回-1。<br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 范例 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> #include&lt;stdio.h&gt;<br>
      #include&lt;unistd.h&gt;<br>
      int main(int argc,char **argv)<br>
      {<br>
      int ch;<br>
      opterr = 0;<br>
      while((ch = getopt(argc,argv,”a:bcde”))!= -1)<br>
      switch(ch)<br>
      {<br>
      case ‘a’:<br>
      printf(“option a:’%s’\n”,optarg);<br>
      break;<br>
      case ‘b’:<br>
      printf(“option b :b\n”);<br>
      break;<br>
      default:<br>
      printf(“other option :%c\n”,ch);<br>
      }<br>
      printf(“optopt +%c\n”,optopt);<br>
      }<br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 执行 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> $./getopt –b<br>
      option b:b<br>
      $./getopt –c<br>
      other option:c<br>
      $./getopt –a<br>
      other option :?<br>
      $./getopt –a12345<br>
      option a:’12345’<br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top">  
      <div align="right"><br>
        <font face='宋体' size='2'><a name=linuxc294></a></font> </div>
    </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> <br>
        </font> </div>
    </td>
    <td> <font face='宋体' size='2'> <br>
      isatty(判断文件描述词是否是为终端机) </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 相关函数 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> ttyname<br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 表头文件 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> #include&lt;unistd.h&gt;<br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 定义函数 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> int isatty(int desc);<br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 函数说明 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> 如果参数desc所代表的文件描述词为一终端机则返回1,否则返回0。<br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 返回值 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> 如果文件为终端机则返回1,否则返回0。<br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 范例 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> 参考ttyname()。<br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top">  
      <div align="right"><br>
        <font face='宋体' size='2'><a name=linuxc295></a></font> </div>
    </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> <br>
        </font> </div>
    </td>
    <td> <font face='宋体' size='2'> <br>
      select(I/O多工机制) </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 表头文件 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> #include&lt;sys/time.h&gt;<br>
      #include&lt;sys/types.h&gt;<br>
      #include&lt;unistd.h&gt;<br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 定义函数 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> int select(int n,fd_set * readfds,fd_set * 
      writefds,fd_set * exceptfds,struct timeval * timeout);<br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 函数说明 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> select()用来等待文件描述词状态的改变。参数n代表最大的文件描述词加1,参数readfds、writefds 
      和exceptfds 称为描述词组,是用来回传该描述词的读,写或例外的状况。底下的宏提供了处理这三种描述词组的方式:<br>
      FD_CLR(inr fd,fd_set* set);用来清除描述词组set中相关fd 的位<br>
      FD_ISSET(int fd,fd_set *set);用来测试描述词组set中相关fd 的位是否为真<br>
      FD_SET(int fd,fd_set*set);用来设置描述词组set中相关fd的位<br>
      FD_ZERO(fd_set *set); 用来清除描述词组set的全部位<br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 参数 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> timeout为结构timeval,用来设置select()的等待时间,其结构定义如下<br>
      struct timeval<br>
      {<br>
      time_t tv_sec;<br>
      time_t tv_usec;<br>
      };<br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 返回值 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> 如果参数timeout设为NULL则表示select()没有timeout。<br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 错误代码 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> 执行成功则返回文件描述词状态已改变的个数,如果返回0代表在描述词状态改变前已超过timeout时间,当有错误发生时则返回-1,错误原因存于errno,此时参数readfds,writefds,exceptfds和timeout的值变成不可预测。<br>
      EBADF 文件描述词为无效的或该文件已关闭<br>
      EINTR 此调用被信号所中断<br>
      EINVAL 参数n 为负值。<br>
      ENOMEM 核心内存不足<br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 范例 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> 常见的程序片段:fs_set readset;<br>
      FD_ZERO(&readset);<br>
      FD_SET(fd,&readset);<br>
      select(fd+1,&readset,NULL,NULL,NULL);<br>
      if(FD_ISSET(fd,readset){……}<br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top">  
      <div align="right"><br>
        <font face='宋体' size='2'><a name=linuxc296></a></font> </div>
    </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> <br>
        </font> </div>
    </td>
    <td> <font face='宋体' size='2'> <br>
      ttyname(返回一终端机名称) </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 相关函数 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> Isatty<br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 表头文件 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> #include&lt;unistd.h&gt;<br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 定义函数 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> char * ttyname(int desc);<br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 函数说明 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> 如果参数desc所代表的文件描述词为一终端机,则会将此终端机名称由一字符串指针返回,否则返回NULL。<br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 返回值 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> 如果成功则返回指向终端机名称的字符串指针,有错误情况发生时则返回NULL。<br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 范例 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> #include&lt;unistd.h&gt;<br>
      #include&lt;sys/types.h&gt;<br>
      #include &lt;sys/stat.h&gt;<br>
      #include&lt;fcntl.h&gt;<br>
      main()<br>
      {<br>
      int fd;<br>
      char * file = “/dev/tty”;<br>
      fd = open (fiel,O_RDONLY);<br>
      printf(“%s”,file);<br>
      if(isatty(fd)){<br>
      printf(“is a tty.\n”);<br>
      printf(“ttyname = %s \n”,ttyname(fd));<br>
      }<br>
      else printf(“ is not a tty\n”);<br>
      close(fd);<br>
      }<br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top"> 
      <div align="right"><font face='宋体' size='2'> 执行 </font> </div>
    </td>
    <td> <font face='宋体' size='2'> /dev/tty is a tty<br>
      ttyname = /dev/tty<br>
      </font> </td>
  </tr>
  <tr> 
    <td width="80" valign="top">  
      <div align="right"><br>
      </div>
    </td>
  </tr>
</table>
</body>
</html>

⌨️ 快捷键说明

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