代码编织梦想

1.stat  获取文件属性

#include

#include

#include

int stat(const char *filename,struct stat *buf);

int fstat(fd, struct stat *buf);

int lstat(const char *filename, struct stat *buf);

fstat与stat的区别是fstat通过文件描述符指定文件;lstat与stat的区别在于,对于符号连接文件,lstat返回的是符号链接文件本身的状态信息,而stat返回的是符号链接指向的文件状态信心。

成功返回0,错误范围-1

2.  chown 设置文件属性

#include

#include

int chown(const char *path,uid_t owner, gid_t group);

int fchown(int fd, uid_t owner, gid_t group)’

int lchown(const char *path, uid_t owner,gid_t group);

fchown与chown的区别是fchown通过文件描述符指定文件;lchown与chown的区别在于,对于符号连接文件,lchown返回的是符号链接文件本身的状态信息,而chown返回的是符号链接指向的文件状态信心。

成功返回0,错误范围-1

文件的所有者只能改变文件的组id为其所属组中的一个,超级用户才能修改文件的所有者id,并且超级用户可以任意修改文件的用户组id。如果参数owner或group指定为-1,那么文件的用户id和组id不会被改变。

3. truncate 改变文件大小

#include

#include

int truncate(const char *path, off_t length);

int ftruncate(int fd, off_t length);

将指定文件大小改为参数length指定的大小,如果原来的文件比参数length大,则超过的部分会被删除;如果原来的文件大小比参数length小,则文件将被扩展,扩展部分用0填充。

成功返回0,错误范围-1

4. utime 改变文件的st_mtime域和st_ctime域,即存取时间和修改时间。

#include

#include

int utime(const char *filename,struct utimbuf *buf);

#include

int utime(char *filename,struct timeval *tvp);

struct utimbuf

{

time_t actime;

time_t modtime;

}

如果buf是一个空指针,则存取时间和修改时间都为当前时间。

成功返回0,错误范围-1

5. umake 设置文件创建时的屏蔽字,并返回以前的值

#include

#include

mode_t umask(mode_t mask);

6. rename 文件的移动和修改文件名

#include

int rename(const char *oldpath, const char *newpath);

若newpath指定的文件已存在,则原文件会删除

7. remove 文件的删除

#include

int unlink(const char *pathname);

int remove(const char *pathname);

文件的删除可以使用unlink系统调用,目录的删除需要使用rmdir系统调用,而通用的既能删除文件又能删除目录的系统调用是remove,remove内部封装了unlink和rmdir。

成功返回0,错位返回-1。

8. mkdir 目录的创建

#include

#include

int mkdir(const char *pathname, mode_t mode);

成功返回0,错位返回-1。

9. rmdir 目录的删除

#include

int rmdir(const char *pathname);

rmdir只能删除空目录,成功返回0,错位返回-1。

10. getcwd 获取当前目录

#include

char *gercwd(char *buf, size_t size);

char *get_current_dir_name(void);

char *getwd(char *buf);

getcwd会将当前的工作目录绝对路径复制到参数buf所指的内存空间,参数size为buf的空间大小。在调用此函数时,buf所指的内存空间要足够大,若工作目录绝对路径的字符串长度超过参数size大小,则返回值为NULL,errno的值为ERANGE。倘若参数buf为NULL,getcwd()会根据参数size的大小自动分配内存(使用malloc),如果size也为0,则getcwd()会根据工作目录绝对路径的字符串长度来决定配置的内存大小。进程可以在使用完此字符串后利用free()来释放空间。

执行成功则将结果复制到参数buff所指向的内存空间,或是返回自动分配的字符串指针,失败返回NULL.

11. chdir 设置工作目录

#include

int chdir(const char *path);

int fchdir(int fd);

chdir将工作目录改为由path指定的目录,fchdir将工作目录改为由文件描述符fd指定的目录。

执行成功返回0,错误返回-1

12. 获取目录信息

1)  opendir

#include

#include

DIR *opendir(const char *name);

opendir打开参数name指定的目录,并返回DIR*形态的目录刘,类似于文件描述符。成功返回目录流,失败返回NULL

2)  readdir

#include

#include

struct dirent *readdir(DIR *dir);

readdir用来从dir所指向的目录读取出目录的信息,返回一个struct dirent结构的指针。

struct dirent

{

long d_ino;//此目录i节点编号

off_t d_off;//目录文件开头至此目录进入点的位移

unsigned short d_reclen;//d_name的长度

char d_name[NAME_MAX+1];//以NULL结尾的文件名

}

函数执行成功范围该目录下一个文件的信息。如果用opendir打开某个目录,第一次调用该函数,则返回的是该目录下的第一个文件的信息。如果发生错误或者读到目录文件尾,返回NULL。

3)  closedir

#include

#include

int *closedir(DIR *dir);

关闭目录,成功返回0,失败返回-1

13. symlink建立符号链接

#include

Int symlink(const char *actualpath, const char *sympath);

下面给出三个实例分别实现不同的函数功能:

1.改变进程的当前目录到指定的目录然后打印出该目录名

注意:改变的是当前进程的目录,并不修改父进程,所以当程序退出后,功能不变

/*改变进程的当前目录到指定的目录然后打印出该目录名。*/

#include #include #include int main(int argc, char *argv[])

{

char path[1000];

if(argc!=2)

{

printf("Usage ex3-7 \n");

return 1;

}

if(chdir(argv[1])<0)

{

printf("chdir failed\n");

return 2;

}

if(getwd(path)==NULL)

{

printf("getwd failed\n");

return 3;

}

printf("CWD =%s \n", path);

return 0;

}

2.创建一个目录,然后删除此目录

/*改变进程的当前目录到指定的目录然后打印出该目录名。*/

#include #include #include int main(int argc, char *argv[])

{

char path[1000];

if(argc!=2)

{

printf("Usage ex3-7 \n");

return 1;

}

if(chdir(argv[1])<0)

{

printf("chdir failed\n");

return 2;

}

if(getwd(path)==NULL)

{

printf("getwd failed\n");

return 3;

}

printf("CWD =%s \n", path);

return 0;

}

3.目录打开,读取和关闭函数的使用方法

#include #include #include #include int main(int argc, char *argv[])

{

char path[1000];

DIR * dp;

struct dirent *pdirent;

if(argc!=2)

{

printf("Usage ex3-9 \n");

return 1;

}

if((dp=opendir(argv[1]))==NULL)

{

printf("Opendir %s failed\n", argv[1]);

return 2;

}

if((pdirent=readdir(dp))==0)

{

printf("readdir %s failed\n", argv[1]);

return 3;

}

printf("%s\n",pdirent->d_name);

closedir(dp);

return 0;

}

linux下c/c++ 目录和文件操作-爱代码爱编程

    学习Linux环境编程  读取文件和目录是很重要的环节,因为Linux环境下  "一切皆文件"     首先得明白文件描述符的概念,每一个进程都会默认打开标准输入,标准输出,标准出错 下面这个案列很好的解释文件描述符的概念      #include <stdlib.h> #include <stdio.h> #inc

linux c高级编程——目录操作-爱代码爱编程

Linux C目录操作   宗旨:技术的学习是有限的,分享的精神是无限的。          Linux思想“一切皆文件”,目录也是文件,只是存储的内容有别于普通文件。目录文件中存储的该目录下所有的文件及子目录文件的信息,inode节点。 一、打开/关闭目录文件 1、 opendir ——打开目录 (1)函数原型   #in

使用linux c 目录操作函数,读取任一目录下的所有目录信息文件信息-爱代码爱编程

# include <stdio.h> # include <string.h> # include <stdlib.h> # include <unistd.h> # include <dirent.h> # include <sys/types.h> int re_re

chdir改变当前目录-爱代码爱编程

1、在实际应用中,代码需要从当前目录进到其它目录,完成操作,然后再回到当前目录。这个时候需要getcwd获取当前目录路径,保存起来,在使用chdir跳转到其它目录,然后再使用chdir和保存的路径回到最初的目录。 2、man chdir 3、int  chdir(const char *path);    -参数*path;文件路径  

linux下c语言基本的目录操作编程函数简介_年纪青青的博客-爱代码爱编程

目录简介 对于linux文件目录操作函数其实使用命令就能实现,但是其实对于一些命令本质上就是调用系统函数的,比如:madir,umask,chown等命令。 获取文件信息主要函数 #include <sys/

【c语言】之 linux 系统编程 - 目录操作_王廷云的博客的博客-爱代码爱编程

1、目录的操作函数:(具体功能请查看帮助手册 man 3 opendir) // 打开目录 DIR *opendir(const char *pathname) // 成功返回指针 失败返回NULL // 遍历目录 st

linux c 获取当前的工作目录_weixin_34023863的博客-爱代码爱编程

#include <stdio.h> #include <string.h> #include <unistd.h> int main(void) { char buffer[1024] ; //获取当前的工作目录,注意:长度必须大于工作目录的长度加一 char *p = getcwd(buffer ,

Linux C/C++ 文件和目录操作-爱代码爱编程

UNIX文件系统是目录和文件的一种结构。所有东西的起点是称为根的目录,这个目录的名称是一个字符“/”。 目录是一个包含项的文件。在逻辑上,可以认为每个目录项都包含一个文件名,同时还包含说明该文件属性的信息。那什么又是文件属性呢?文件属性是指文件的类型、文件大小、文件所有者等等。 我们要介绍的就是怎么列出一个目录的所有文件名字以及文件的大小。 open

Linux C 目录操作-爱代码爱编程

文章目录 1. Linux 下的文件分类2. 获取当前工作路径3. 改变当前工作目录4. 创建和删除目录5. 目录的读取5.1 读取目录前,需要先打开目录;读取完毕后,需要关闭打开的目录流指针5.2 读取目录5.3 判断文件类型函数6. 实例用户在命令行给出目录,要求遍历所有子目录并判断各个文件类型。 我们之前讨论过文件操作,一起看过文件的打开

【C】linux下切换工作目录至程序所在目录-爱代码爱编程

1、获取当前程序的绝对路径 /proc/self/exe是一个符号链接,代表当前程序的绝对路径 用readlink读取/proc/self/exe可以获取当前程序的绝对路径 2、从字符串中获取目录 char dirname(char path); 3、改变当前工作目录 int chdir(const char *path ); 4、完整示例

c语言 linux取运行目录,c语言获取当前工作路径的实现代码(windows/linux)-爱代码爱编程

Linux 函数名: getcwd 功 能: 取得当前的工作目录 用 法: char *getcwd(char *buf, size_t size); 函数说明: getcwd()会将当前的工作目录绝对路径复制到参数buf所指的内存空间,参数size为buf的空间大小。在调用此函数时,buf所指的内存空间要足够大,若工作目录绝对路径的字符串长度

linux -爱代码爱编程

创建/删除目录 #include<sys/stat.h> int mkdir(const char *path_name,mode_t mode); #include<unistd.h> int