bc... [母]

12.htm ( File view )

  • By 2010-08-02
  • View(s):4
  • Download(s):0
  • Point(s): 1
			<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0056)http://linux.tcpip.com.cn/~foolox/c_fun/function/12.html -->
<HTML><HEAD><TITLE>Untitled Document</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2900.2180" name=GENERATOR></HEAD>
<BODY>
<TABLE width="100%">
  <TBODY>
  <TR>
    <TD vAlign=top width=80>  
      <DIV align=right><BR><FONT face=宋体 size=2><A 
      name=linuxc211></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>access(判断是否具有存取文件的权限) </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,open,chmod,chown,setuid,setgid<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 access(const char * pathname,int 
      mode);<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>access()会检查是否可以读/写某一已存在的文件。参数mode有几种情况组合,R_OK,W_OK,X_OK 
      和F_OK。R_OK,W_OK与X_OK用来检查文件是否具有读取、写入和执行的权限。F_OK则是用来判断该文件是否存在。由于access()只作权限的核查,并不理会文件形态或文件内容,因此,如果一目录表示为“可写入”,表示可以在该目录中建立新文件等操作,而非意味此目录可以被当做文件处理。例如,你会发现DOS的文件都具有“可执行”权限,但用execve()执行时则会失败。<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。<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>EACCESS 参数pathname 所指定的文件不符合所要求测试的权限。<BR>EROFS 
      欲测试写入权限的文件存在于只读文件系统内。<BR>EFAULT 参数pathname指针超出可存取内存空间。<BR>EINVAL 参数mode 
      不正确。<BR>ENAMETOOLONG 参数pathname太长。<BR>ENOTDIR 参数pathname为一目录。<BR>ENOMEM 
      核心内存不足<BR>ELOOP 参数pathname有过多符号连接问题。<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>使用access()作用户认证方面的判断要特别小心,例如在access()后再做open()的空文件可能会造成系统安全上的问题。<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 
      */<BR>#include&lt;unistd.h&gt;<BR>int main()<BR>{
<BR>if 
      (access(“/etc/passwd”,R_OK) = =0)<BR>printf(“/etc/passwd can be 
      read\n”);<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 can be read<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>  
      <DIV align=right><BR><FONT face=宋体 size=2><A 
      name=linuxc212></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>alphasort(依字母顺序排序目录结构) </FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>相关函数 </FONT></DIV></TD>
    <TD><FONT face=宋体 size=2>scandir,qsort<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>int alphasort(const struct dirent **a,const 
      struct dirent **b);<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>alphasort()为scandir()最后调用qsort()函数时传给qsort()作为判断的函数,详细说明请参考scandir()及qsort()。<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>参考qsort()。<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>main()<BR>{
<BR>struct dirent 
      **namelist;<BR>int i,total;<BR>total = scandir(“/”,&amp;namelist 
      ,0,alphasort);<BR>if(total 
      &lt;0)<BR>perror(“scandir”);<BR>else{
<BR>for(i=0;i&lt;total;i++)<BR>printf(“%s\n”,namelist[i]-&gt;d_name);<BR>printf(“total 
      = %d\n”,total);<BR>
}<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>..<BR>.gnome<BR>.gnome_private<BR>ErrorLog<BR>Weblog<BR>bin<BR>boot<BR>dev<BR>dosc<BR>dosd<BR>etc<BR>home<BR>lib<BR>lost+found<BR>misc<BR>mnt<BR>opt<BR>proc<BR>root<BR>sbin<BR>tmp<BR>usr<BR>var<BR>total 
      = 24<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>  
      <DIV align=right><BR><FONT face=宋体 size=2><A 
      name=linuxc213></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>chdir(改变当前的工作(目录) </FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>相关函数 </FONT></DIV></TD>
    <TD><FONT face=宋体 size=2>getcwd,chroot<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 chdir(const char * path);<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>chdir()用来将当前的工作目录改变成以参数path所指的目录。<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>#include&lt;unistd.h&gt;<BR>main()<BR>{
<BR>chdir(“/tmp”);<BR>printf(“current 
      working directory: %s\n”,getcwd(NULL,NULL));<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>current working directory :/tmp<BR></FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>  
      <DIV align=right><BR><FONT face=宋体 size=2><A 
      name=linuxc214></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>chmod(改变文件的权限) </FONT></TD></TR>
  <TR>
    <TD vAlign=top width=80>
      <DIV align=right><FONT face=宋体 size=2>相关函数 </FONT></DIV></TD>
    <TD><FONT face=宋体 size=2>fchmod,stat,open,chown<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;sys/stat.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 chmod(const char * path,mode_t 
      mode);<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>chmod()会依参数mode 权限来更改参数path 
  指定文件的权限。<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>mode 有下列数种组合<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 
      其他用户
...
...
(Not finished, please download and read the complete file)
			
...
Expand> <Close

Want complete source code? Download it here

Point(s): 1

Download
0 lines left, continue to read

File list

Tips: You can preview the content of files by clicking file names^_^
Name Size Date
Linux-C函数-信号处理篇.htm552.00 B19-05-08|10:27
Linux-C函数-内存及字符串操作篇.htm568.00 B19-05-08|10:27
Linux-C函数-内存控制篇.htm552.00 B19-05-08|10:27
Linux-C函数-字符串转换篇.htm556.00 B19-05-08|10:27
Linux-C函数-字符测试篇.htm552.00 B19-05-08|10:27
Linux-C函数-常用数学函数篇.htm560.00 B19-05-08|10:27
Linux-C函数-接口处理篇.htm552.00 B19-05-08|10:27
Linux-C函数-数据结构及算法篇.htm564.00 B19-05-08|10:27
Linux-C函数-文件内容操作篇.htm560.00 B19-05-08|10:27
Linux-C函数-文件操作篇.htm552.00 B19-05-08|10:27
Linux-C函数-文件权限控制篇.htm560.00 B19-05-08|10:27
Linux-C函数-日期时间篇.htm552.00 B19-05-08|10:27
Linux-C函数-环境变量篇.htm552.00 B19-05-08|10:27
Linux-C函数-用户组篇.htm548.00 B19-05-08|10:27
Linux-C函数-终端控制篇.htm552.00 B19-05-08|10:27
Linux-C函数-进程操作篇.htm552.00 B19-05-08|10:27
11.htm72.14 kB19-05-08|10:27
left.htm36.58 kB19-05-08|10:27
16.htm9.46 kB19-05-08|10:27
left.htm36.58 kB19-05-08|10:27
07.htm76.70 kB19-05-08|10:27
left.htm36.58 kB19-05-08|10:27
15.htm6.96 kB19-05-08|10:27
left.htm36.58 kB19-05-08|10:27
04.htm18.86 kB19-05-08|10:27
left.htm36.58 kB19-05-08|10:27
12.htm67.83 kB19-05-08|10:27
left.htm36.58 kB19-05-08|10:27
09.htm30.28 kB19-05-08|10:27
left.htm36.58 kB19-05-08|10:27
10.htm49.96 kB19-05-08|10:27
left.htm36.58 kB19-05-08|10:27
08.htm18.21 kB19-05-08|10:27
left.htm36.58 kB19-05-08|10:27
14.htm58.14 kB19-05-08|10:27
left.htm36.58 kB19-05-08|10:27
06.htm39.94 kB19-05-08|10:27
left.htm36.58 kB19-05-08|10:27
01.htm27.35 kB19-05-08|10:27
left.htm36.58 kB19-05-08|10:27
02.htm23.47 kB19-05-08|10:27
left.htm36.58 kB19-05-08|10:27
03.htm14.07 kB19-05-08|10:27
left.htm36.58 kB19-05-08|10:27
05.htm58.64 kB19-05-08|10:27
left.htm36.58 kB19-05-08|10:27
13.htm40.40 kB19-05-08|10:27
left.htm36.58 kB19-05-08|10:27
Linux-C函数-进程操作篇.files0.00 B11-08-08|17:48
Linux-C函数-终端控制篇.files0.00 B11-08-08|17:48
Linux-C函数-用户组篇.files0.00 B11-08-08|17:48
Linux-C函数-环境变量篇.files0.00 B11-08-08|17:48
Linux-C函数-日期时间篇.files0.00 B11-08-08|17:48
Linux-C函数-文件权限控制篇.files0.00 B11-08-08|17:48
Linux-C函数-文件操作篇.files0.00 B11-08-08|17:48
Linux-C函数-文件内容操作篇.files0.00 B11-08-08|17:48
Linux-C函数-数据结构及算法篇.files0.00 B11-08-08|17:48
Linux-C函数-接口处理篇.files0.00 B11-08-08|17:48
Linux-C函数-常用数学函数篇.files0.00 B11-08-08|17:48
Linux-C函数-字符测试篇.files0.00 B11-08-08|17:48
Linux-C函数-字符串转换篇.files0.00 B11-08-08|17:48
Linux-C函数-内存控制篇.files0.00 B11-08-08|17:48
Linux-C函数-内存及字符串操作篇.files0.00 B11-08-08|17:48
Linux-C函数-信号处理篇.files0.00 B11-08-08|17:48
Linux-C0.00 B11-08-08|17:48
...

12.htm (131.54 kB)

Need 1 point
Your Point(s)

Your Point isn't enough.

Get point immediately by PayPal

More(Debit card / Credit card / PayPal Credit / Online Banking)

Submit your source codes. Get more point

LOGIN

Don't have an account? Register now
Need any help?
Mail to: support@codeforge.com

切换到中文版?

CodeForge Chinese Version
CodeForge English Version

Where are you going?

^_^"Oops ...

Sorry!This guy is mysterious, its blog hasn't been opened, try another, please!
OK

Warm tip!

CodeForge to FavoriteFavorite by Ctrl+D