Chinaunix首页 | 论坛 | 博客
  • 博客访问: 124820
  • 博文数量: 20
  • 博客积分: 911
  • 博客等级: 准尉
  • 技术积分: 210
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-03 21:02
文章分类
文章存档

2010年(4)

2009年(3)

2008年(13)

分类: LINUX

2008-11-03 18:58:21

文件学习总结(一)
文件和目录常用函数简介
Linux操作系统中的文件比其他操作系统中文件的含义更为丰富。现在,就将有关文件的知识总结如下,有欠妥的地方,还望不吝赐教。
(1)getcwd()
此函数可用来获得当前的工作目录。使用时应包含头文件,函数形式为:char *getcwd(char *buffer,size_t size);
其中,buffer是存储当前工作目录的字符串指针,size是字符串的大小。
实例:
#include
#include
#include
int main(void)
{
    char cur_work_dir[PATH_MAX];
    printf("Current Max Path Length Is %d\n",PATH_MAX);
    if(getcwd(cur_work_dir,PATH_MAX)==NULL)
    {
        perror("Could not get current working directory!");
        return 1;
        }
        printf("Current working directory is :%s\n",cur_work_dir);
        return 0;
    }

运行结果:
michenggang@michenggang-desktop:~/mcg$ gcc -o 4.1 4.1.c
michenggang@michenggang-desktop:~/mcg$ ./4.1
Current Max Path Length Is 4096
Current working directory is :/home/michenggang/mcg
michenggang@michenggang-desktop:~/mcg$
(2)pathconf()
此函数用于获得给定目录或文件的极限。使用时应包含头文件,函数形式为:
long pathconf(char *path,int name);
path可以是包含文件名称的具体文件的位置,name是极限的名称。
(3)chdir(),fchdir()
使用这两个函数,都应包括头文件
1>chdir函数的作用类似于cd命令,用于改变当前的工作目录。函数形式为:
int chdir(const char *path);
参数path是指向目录的字符串指针。(要想得到想要的结果,调用进程时必须要有搜索整个目录的权限)
2>fchdir函数的作用也和cd命令类似,可用来更改当前工作目录。函数形式为:
int fchdir(int fd);
参数fd是目录的文件描述符,其它要求与chdir函数相同。
(4)mkdir()、rmdir()
1>mkdir函数用来创建文件目录。此函数应包含头文件。函数形式为:
int mkdir(const char *pathname,mode_t mode);
其中,pathname是要创建的目录名称,mode是创建的目录权限。创建目录的权限是由(mode &~unmask &0777)来指定的。unmask是默认的权限,也称为剥夺权限。对于Linux操作系统而言,新创建的目录owner是进程的有效用户id。
2>rmdir函数用于删除指定目录。应包含头文件.函数形式为:
int rmdir(const char *pathname) ;
pathname是指向要删除目录的字符串指针。
实例
   #include                                                       
   #include
   #include
   int main(void){
           char *pathname="mcg";
           if(mkdir(pathname,0700)==-1){
           perror("Could not create the directory");
           return 1;
          }
          return 0;
  }
编译及运行结果:                     
michenggang@michenggang-desktop:~/mcg$ gcc -o 4.1.6 4.1.6.c
michenggang@michenggang-desktop:~/mcg$ ./4.1.6
michenggang@michenggang-desktop:~/mcg$ ls -l
total 328
-rw-r--r-- 1 michenggang michenggang  880 2008-07-13 09:37 3d.c
-rwxr-xr-x 1 michenggang michenggang 6906 2008-09-13 17:57 4.1
-rwxr-xr-x 1 michenggang michenggang 6517 2008-11-03 18:13 4.1.6
-rw-r--r-- 1 michenggang michenggang  217 2008-11-03 18:13 4.1.6.c
drwx------ 2 michenggang michenggang 4096 2008-11-03 18:13 mcg
在代码中,希望创建的mcg目录的权限是所有者具有所有权限,而同组的其他用户没有权限。代码中给的是700,创建的目录权限是由(mode &~ & 0777)来计算的,输入unmask命令,系统显示现在的默认属性为0002。
michenggang@michenggang-desktop:~/mcg$umask
0002
michenggang@michenggang-desktop:~/mcg$

因此,目录mcg的权限是(700&775&777)=700,这个与程序运行的结果相符。
(5)chmod()、fchmod()
两个函数都可用来修改文件权限,在使用时应包括两个头文件。函数形式分别为:
int chmod(const char *path,mode_t mode);
int fchmod(int fildes,mode_t mode);
chmod()的参数包括文件和目录所在的位置(path)和修改的文件的权限(mode);
fchmod()的参数有文件描述符(fildes)和修改文件的权限(mode)。

以上只是文件知识的一小部分,有很多东西还需要我们自己来体会。
 
 
阅读(3860) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~