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

📄 12.htm

📁 Linux 常用C函数(中文版) html 格式
💻 HTM
📖 第 1 页 / 共 5 页
字号:
    <TD><FONT face=宋体 size=2><BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>错误代码 </FONT></DIV></TD>
    <TD><FONT face=宋体 size=2>EBADF dir为无效的目录流<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>范例 </FONT></DIV></TD>
    <TD><FONT face=宋体 
      size=2>#include&lt;sys/types.h&gt;<BR>#include&lt;dirent.h&gt;<BR>#include&lt;unistd.h&gt;<BR>main()<BR>{<BR>DIR 
      * dir;<BR>struct dirent *ptr;<BR>dir = opendir(“/etc/rc.d”);<BR>while((ptr 
      = readdir(dir))!=NULL)<BR>{<BR>printf(“d_name 
      :%s\n”,ptr-&gt;d_name);<BR>}<BR>rewinddir(dir);<BR>printf(“readdir 
      again!\n”);<BR>while((ptr = readdir(dir))!=NULL)<BR>{<BR>printf(“d_name: 
      %s\n”,ptr-&gt;d_name);<BR>}<BR>closedir(dir);<BR>}<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>执行 </FONT></DIV></TD>
    <TD><FONT face=宋体 
      size=2>d_name:.<BR>d_name:..<BR>d_name:init.d<BR>d_name:rc0.d<BR>d_name:rc1.d<BR>d_name:rc2.d<BR>d_name:rc3.d<BR>d_name:rc4.d<BR>d_name:rc5.d<BR>d_name:rc6.d<BR>d_name:rc<BR>d_name:rc.local<BR>d_name:rc.sysinit<BR>readdir 
      again!<BR>d_name:.<BR>d_name:..<BR>d_name:init.d<BR>d_name:rc0.d<BR>d_name:rc1.d<BR>d_name:rc2.d<BR>d_name:rc3.d<BR>d_name:rc4.d<BR>d_name:rc5.d<BR>d_name:rc6.d<BR>d_name:rc<BR>d_name:rc.local<BR>d_name:rc.sysinit<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>  
      <DIV align=right><BR><FONT face=宋体 size=2><A 
      name=linuxc232></A></FONT></DIV></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2><BR></FONT></DIV></TD>
    <TD><FONT face=宋体 size=2><BR>seekdir(设置下回读取目录的位置) </FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>相关函数 </FONT></DIV></TD>
    <TD><FONT face=宋体 
      size=2>open,opendir,closedir,rewinddir,telldir,readdir,scandir<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>表头文件 </FONT></DIV></TD>
    <TD><FONT face=宋体 size=2>#include&lt;dirent.h&gt;<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>定义函数 </FONT></DIV></TD>
    <TD><FONT face=宋体 size=2>void seekdir(DIR * dir,off_t 
    offset);<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>函数说明 </FONT></DIV></TD>
    <TD><FONT face=宋体 
      size=2>seekdir()用来设置参数dir目录流目前的读取位置,在调用readdir()时便从此新位置开始读取。参数offset 
      代表距离目录文件开头的偏移量。<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>返回值 </FONT></DIV></TD>
    <TD><FONT face=宋体 size=2><BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>错误代码 </FONT></DIV></TD>
    <TD><FONT face=宋体 size=2>EBADF 参数dir为无效的目录流<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>范例 </FONT></DIV></TD>
    <TD><FONT face=宋体 
      size=2>#include&lt;sys/types.h&gt;<BR>#include&lt;dirent.h&gt;<BR>#include&lt;unistd.h&gt;<BR>main()<BR>{<BR>DIR 
      * dir;<BR>struct dirent * ptr;<BR>int 
      offset,offset_5,i=0;<BR>dir=opendir(“/etc/rc.d”);<BR>while((ptr = 
      readdir(dir))!=NULL)<BR>{<BR>offset = telldir(dir);<BR>if(++i = =5) 
      offset_5 =offset;<BR>printf(“d_name :%s offset :%d 
      \n”,ptr-&gt;d_name,offset);<BR>}<BR>seekdir(dir 
      offset_5);<BR>printf(“Readdir again!\n”);<BR>while((ptr = 
      readdir(dir))!=NULL)<BR>{<BR>offset = telldir(dir);<BR>printf(“d_name :%s 
      offset 
      :%d\n”,ptr-&gt;d_name.offset);<BR>}<BR>closedir(dir);<BR>}<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>执行 </FONT></DIV></TD>
    <TD><FONT face=宋体 size=2>d_name : . offset :12<BR>d_name : .. 
      offset:24<BR>d_name : init.d offset 40<BR>d_name : rc0.d offset 
      :56<BR>d_name :rc1.d offset :72<BR>d_name:rc2.d offset :88<BR>d_name:rc3.d 
      offset 104<BR>d_name:rc4.d offset:120<BR>d_name:rc5.d 
      offset:136<BR>d_name:rc6.d offset:152<BR>d_name:rc offset 
      164<BR>d_name:rc.local offset :180<BR>d_name:rc.sysinit offset 
      :4096<BR>readdir again!<BR>d_name:rc2.d offset :88<BR>d_name:rc3.d offset 
      104<BR>d_name:rc4.d offset:120<BR>d_name:rc5.d offset:136<BR>d_name:rc6.d 
      offset:152<BR>d_name:rc offset 164<BR>d_name:rc.local offset 
      :180<BR>d_name:rc.sysinit offset :4096<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>  
      <DIV align=right><BR><FONT face=宋体 size=2><A 
      name=linuxc233></A></FONT></DIV></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2><BR></FONT></DIV></TD>
    <TD><FONT face=宋体 size=2><BR>stat(取得文件状态) </FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>相关函数 </FONT></DIV></TD>
    <TD><FONT face=宋体 
    size=2>fstat,lstat,chmod,chown,readlink,utime<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>表头文件 </FONT></DIV></TD>
    <TD><FONT face=宋体 
      size=2>#include&lt;sys/stat.h&gt;<BR>#include&lt;unistd.h&gt;<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>定义函数 </FONT></DIV></TD>
    <TD><FONT face=宋体 size=2>int stat(const char * file_name,struct stat 
      *buf);<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>函数说明 </FONT></DIV></TD>
    <TD><FONT face=宋体 
      size=2>stat()用来将参数file_name所指的文件状态,复制到参数buf所指的结构中。<BR>下面是struct 
      stat内各参数的说明<BR>struct stat<BR>{<BR>dev_t st_dev; /*device*/<BR>ino_t 
      st_ino; /*inode*/<BR>mode_t st_mode; /*protection*/<BR>nlink_t st_nlink; 
      /*number of hard links */<BR>uid_t st_uid; /*user ID of owner*/<BR>gid_t 
      st_gid; /*group ID of owner*/<BR>dev_t st_rdev; /*device type */<BR>off_t 
      st_size; /*total size, in bytes*/<BR>unsigned long st_blksize; /*blocksize 
      for filesystem I/O */<BR>unsigned long st_blocks; /*number of blocks 
      allocated*/<BR>time_t st_atime; /* time of lastaccess*/<BR>time_t 
      st_mtime; /* time of last modification */<BR>time_t st_ctime; /* time of 
      last change */<BR>};<BR>st_dev 文件的设备编号<BR>st_ino 文件的i-node<BR>st_mode 
      文件的类型和存取的权限<BR>st_nlink 连到该文件的硬连接数目,刚建立的文件值为1。<BR>st_uid 
      文件所有者的用户识别码<BR>st_gid 文件所有者的组识别码<BR>st_rdev 若此文件为装置设备文件,则为其设备编号<BR>st_size 
      文件大小,以字节计算<BR>st_blksize 文件系统的I/O 缓冲区大小。<BR>st_blcoks 占用文件区块的个数,每一区块大小为512 
      个字节。<BR>st_atime 
      文件最近一次被存取或被执行的时间,一般只有在用mknod、utime、read、write与tructate时改变。<BR>st_mtime 
      文件最后一次被修改的时间,一般只有在用mknod、utime和write时才会改变<BR>st_ctime 
      i-node最近一次被更改的时间,此参数会在文件所有者、组、权限被更改时更新先前所描述的st_mode 则定义了下列数种情况<BR>S_IFMT 
      0170000 文件类型的位遮罩<BR>S_IFSOCK 0140000 scoket<BR>S_IFLNK 0120000 
      符号连接<BR>S_IFREG 0100000 一般文件<BR>S_IFBLK 0060000 区块装置<BR>S_IFDIR 0040000 
      目录<BR>S_IFCHR 0020000 字符装置<BR>S_IFIFO 0010000 先进先出<BR>S_ISUID 04000 
      文件的(set user-id on execution)位<BR>S_ISGID 02000 文件的(set group-id on 
      execution)位<BR>S_ISVTX 01000 文件的sticky位<BR>S_IRUSR(S_IREAD) 00400 
      文件所有者具可读取权限<BR>S_IWUSR(S_IWRITE)00200 文件所有者具可写入权限<BR>S_IXUSR(S_IEXEC) 
      00100 文件所有者具可执行权限<BR>S_IRGRP 00040 用户组具可读取权限<BR>S_IWGRP 00020 
      用户组具可写入权限<BR>S_IXGRP 00010 用户组具可执行权限<BR>S_IROTH 00004 
      其他用户具可读取权限<BR>S_IWOTH 00002 其他用户具可写入权限<BR>S_IXOTH 00001 
      其他用户具可执行权限<BR>上述的文件类型在POSIX 中定义了检查这些类型的宏定义<BR>S_ISLNK (st_mode) 
      判断是否为符号连接<BR>S_ISREG (st_mode) 是否为一般文件<BR>S_ISDIR 
      (st_mode)是否为目录<BR>S_ISCHR (st_mode)是否为字符装置文件<BR>S_ISBLK (s3e) 
      是否为先进先出<BR>S_ISSOCK (st_mode) 是否为socket<BR>若一目录具有sticky 
      位(S_ISVTX),则表示在此目录下的文件只能被该文件所有者、此目录所有者或root来删除或改名。<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>返回值 </FONT></DIV></TD>
    <TD><FONT face=宋体 size=2>执行成功则返回0,失败返回-1,错误代码存于errno<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>错误代码 </FONT></DIV></TD>
    <TD><FONT face=宋体 size=2>ENOENT 参数file_name指定的文件不存在<BR>ENOTDIR 
      路径中的目录存在但却非真正的目录<BR>ELOOP 欲打开的文件有过多符号连接问题,上限为16符号连接<BR>EFAULT 
      参数buf为无效指针,指向无法存在的内存空间<BR>EACCESS 存取文件时被拒绝<BR>ENOMEM 
      核心内存不足<BR>ENAMETOOLONG 参数file_name的路径名称太长<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>范例 </FONT></DIV></TD>
    <TD><FONT face=宋体 
      size=2>#include&lt;sys/stat.h&gt;<BR>#include&lt;unistd.h&gt;<BR>mian()<BR>{<BR>struct 
      stat buf;<BR>stat (“/etc/passwd”,&amp;buf);<BR>printf(“/etc/passwd file 
      size = %d \n”,buf.st_size);<BR>}<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>执行 </FONT></DIV></TD>
    <TD><FONT face=宋体 size=2>/etc/passwd file size = 705<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>  
      <DIV align=right><BR><FONT face=宋体 size=2><A 
      name=linuxc234></A></FONT></DIV></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2><BR></FONT></DIV></TD>
    <TD><FONT face=宋体 size=2><BR>symlink(建立文件符号连接) </FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>相关函数 </FONT></DIV></TD>
    <TD><FONT face=宋体 size=2>link,unlink<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <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 vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>定义函数 </FONT></DIV></TD>
    <TD><FONT face=宋体 size=2>int symlink( const char * oldpath,const char * 
      newpath);<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>函数说明 </FONT></DIV></TD>
    <TD><FONT face=宋体 
      size=2>symlink()以参数newpath指定的名称来建立一个新的连接(符号连接)到参数oldpath所指定的已存在文件。参数oldpath指定的文件不一定要存在,如果参数newpath指定的名称为一已存在的文件则不会建立连接。<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>返回值 </FONT></DIV></TD>
    <TD><FONT face=宋体 size=2>成功则返回0,失败返回-1,错误原因存于errno。<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>错误代码 </FONT></DIV></TD>
    <TD><FONT face=宋体 size=2>EPERM 参数oldpath与newpath所指的文件系统不支持符号连接<BR>EROFS 
      欲测试写入权限的文件存在于只读文件系统内<BR>EFAULT 
      参数oldpath或newpath指针超出可存取内存空间。<BR>ENAMETOOLONG 
      参数oldpath或newpath太长<BR>ENOMEM 核心内存不足<BR>EEXIST 
      参数newpath所指的文件名已存在。<BR>EMLINK 参数oldpath所指的文件已达到最大连接数目<BR>ELOOP 
      参数pathname有过多符号连接问题<BR>ENOSPC 文件系统的剩余空间不足<BR>EIO I/O 存取错误<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>范例 </FONT></DIV></TD>
    <TD><FONT face=宋体 
      size=2>#include&lt;unistd.h&gt;<BR>main()<BR>{<BR>symlink(“/etc/passwd”,”pass”);<BR>}<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>  
      <DIV align=right><BR><FONT face=宋体 size=2><A 
      name=linuxc235></A></FONT></DIV></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2><BR></FONT></DIV></TD>
    <TD><FONT face=宋体 size=2><BR>telldir(取得目录流的读取位置) </FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>相关函数 </FONT></DIV></TD>
    <TD><FONT face=宋体 
      size=2>open,opendir,closedir,rewinddir,seekdir,readdir,scandir<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>表头文

⌨️ 快捷键说明

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