码迷,mamicode.com
首页 > 其他好文 > 详细

Unix高级环境编程学习笔记(二):文件和目录

时间:2015-03-19 17:56:55      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

1 stat,fstat,lstat函数

#include<sys/stat.h>
int stat (const char* restrict pathname, struct stat *restrict buf);
int fstat (int filedes, struct stat * buf);
int lstat (const char* restrict pathname, struct stat *restrict buf);

 


成功返回0,失败返回-1
 
stat返回pathname上指定的文件的信息结构,fstat返回文件描述符指定文件的信息结构,lstat返回符号连接文件的信息结构,而不是符号连接指向的文件的信息结构

 

2 lstat练习

#include<stdio.h>
#include<sys/stat.h>
int main(int argc, char* argv[])
{
  char* ptr;
  int i;
  struct stat buf;
  for(i=1;i<argc;i++)
    {
      printf("%s:",argv[i]);
      if((      lstat(argv[i], &buf))<0)
    {
      printf("error:lstat");
      continue;
    }
      if(S_ISREG(buf.st_mode))
    ptr = "regular";
      else if(S_ISDIR(buf.st_mode))
    ptr = "directory";
      else if (S_ISCHR(buf.st_mode))
    ptr = "character special";
      else if(S_ISBLK(buf.st_mode))
    ptr = "block special";
      else if(S_ISFIFO(buf.st_mode))
    ptr = "fifo";
      else if(S_ISLNK(buf.st_mode))
    ptr = "link";
      else if(S_ISSOCK(buf.st_mode))
    ptr = "socket";

      printf("%s\n",ptr);
    }
  return 0;
}

 


3 所有者和组所有者


文件的所有者由st_uid标识,组所有者由st_gid标识


4 创建一个文件的用户id会被设置为进程的有效用户id,组id可能是进程的有效组id,也可能是文件所在目录的有效组id


5 access函数用于测试实际用户id对一个文件的访问

 

#include<unistd.h>
int access (const char* pathname ,int mode);

 


成功返回0,失败返回-1
mode的取值
R_OK, W_OK, X_OK, F_OK(测试文件是否存在)


6 chmod和fchmod函数,改变文件访问权限

 

#include<sys/stat.h>
int chmod(const char* pathname, mode_t mode);
int fchmode(int filedes, mode_t mode)

 


成功返回0,失败返回-1

实例:
chmode("bar", S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
为bar增加用户的读写权限,和组及其他的读权限


7 粘住位


当这一位被设置了,该程序第一次被执行并结束时,程序正文部分仍然保存在交换区,使得下次执行程序能较快装入内存区,因为交换区占据连续磁盘空间,而一般的数据往往随机存放
S_ISVTX = SaVed TeXt


8 chown, fchown, lchown, 改变文件用户ID和组ID

#include<unistd.h>
int chown(const char * pathname, uid_t owner, gid_t group)
int fchown(int filedes, uid_t owner, gid_t group)
int lchown(const char* pathname, uid_t owner, gid_t group)

 



Unix高级环境编程学习笔记(二):文件和目录

标签:

原文地址:http://www.cnblogs.com/zhangfann/p/4350809.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!