Linux 文件管理(系统函数)
2016-08-20 21:34
337 查看
//read函数 #include <stdio.h> #include <stdlib.h> #include <unistd.h> /* STDIN_FILENO:标准输入,值是0 STDOUT_FILENO:标准输出,值是1 STDERR_FILENO:标准错误,值是2 头文件是 unistd.h read(文件标识符,缓冲区,缓冲区大小)函数是从某个文件中读取缓冲区大小的数据 ssize_t read(int fd, void *buf, size_t count); read()函数的返回值是输入字符的个数+1(+1是因为系统会为输入的字符串加上'\0') read()相比于scanf()优势在于read()可以读取空格,而scanf()遇到空格结束 但是read不能将数字字符串直接转化成int型,需要调用atoi()函数 read()函数可以读取键盘上输入的每个字符包括回车换行 atoi()函数的头文件是stdlib.h,功能是将字符串转成数字 */ int main(int arg,char *args[]) { char buf[50]={0}; int numx=0; int index=read(STDIN_FILENO,buf,sizeof(buf)); printf("返回值是%d,输入字符串是%s\n",index,buf); numx=atoi(buf); printf("输入的数字是%d\n",numx); return 0; }
//write函数 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> /* ssize_t write(int fd, const void *buf, size_t count); write()函数的返回值是写入字符串的大小(不包含'\0') write()函数向指定文件标识符输出缓冲区数据 */ int main(int arg,char *args[]) { char buf[50]={0}; strcpy(buf,"fly with you!\n"); int index=write(STDOUT_FILENO,buf,strlen(buf)); printf("返回值是%d,\n",index); return 0; }
//open函数|close()函数 #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h> #include <errno.h> /* int open(const char *pathname, int flags); Opne试图打开参数pathname中的一个文件。 参数flags指定访问该文件的方式。 必须把flags设置为O_RDONLY,O_WRONLY,O_RDWR,O_CREAT,O_APPEND分别表示只读、只写、读写、如果文件存在就创建、追加。 open成功后会返回一个文件描述符。 open失败后会返回-1,并设置errno变量 errno是int型,表示错误编号,头文件是errno.h strerror()函数是打印错误信息,头文件是string.h */ int main(int arg,char *args[]) { if(arg<2) { printf("请输入一个参数!\n"); return 0; } int fd=open(args[1],O_RDONLY); if(fd==-1) { printf("错误信息:%s\n",strerror(errno)); }else { printf("文件标识符是%d\n",fd); char buf[100]={0}; //读取当前文件的内容 read(fd,buf,sizeof(buf)-1); printf("%s\n",buf); close(fd); } return 0; }
使用fstat函数获取文件信息。 int fstat(int fd,struct stat *buf) 参数fd必须使用open()函数调用返回的有效文件描述符 使用stat函数获取文件信息 int stat(const char *path,struct stat *buf) 参数path是路径加文件名的字符串 结构体stat struct stat { dev_t st_dev; /*ID of device containing file*/ ino_t st_ino; /*inode number*/ mode_t st_mode; /*protection*/ nlink_t st_nlink; /*numbers of hard links*/ uid_t st_uid; /*user ID of owner*/ gid_t st_gid; /*group ID of owner*/ dev_t st_rdev; /*device ID (if special file)*/ off_t st_size; /*total size,in bytes*/ blksize_t st_blksize; /*blocksize for filesystem I/O*/ blkcnt_t st_blocks; /*number of blocks allocated*/ time_t st_atime; /*time of last access*/ time_t st_mtime; /*time of last modification*/ time_t st_ctime; /*time of last status change*/ }; 为了正确解释文件类型,有一套宏能够计算stat借口的st_mode成员。 S_ISREG(m) is it a regular file? S_ISDIR(m) directory? S_ISCHR(m) character device? S_ISBLK(m) block device? S_ISFIFO(m) FIFO (named pipe)? S_ISLNK(m) symbolic lin?(Not in POSIX.1-1996) S_ISSOCK(m) socket?(Not in POSIX.1-1996)
//fstat()函数 #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h> #include <errno.h> int main(int arg,char *args[]) { if(arg<2) { printf("请输入一个参数!\n"); return 0; } //open file /* 备注:如果是以追加的方式打开文件,必须使用 O_RDWR|O_APPEND;单独的是O_APPEND没有效果! */ int fd=open(args[1],O_RDONLY); //Judgment file identifier if(fd==-1) { printf("error msg:%s\n",strerror(errno)); }else { printf("file identifier:%d\n",fd); //define struct stat struct stat buf; //get file stat fstat(fd,&buf); //judge file tyep if(S_ISREG(buf.st_mode)) { printf("this is regular file!\n"); }else if(S_ISDIR(buf.st_mode)) { printf("this id directory!\n"); } //show file size printf("file size:%d\n",buf.st_size); //close file close(fd); } return 0; }
getpass()函数 读写用户输入,屏幕不回显(一般用于输入密码不显示) char * getpass(const char * prompt); getpass用于从键盘读取用户输入,但屏幕不回显。 参数prompt为屏幕提示字符。 函数返回值为用户键盘输入字符串
//getpass()函数的使用 #include <stdio.h> #include <unistd.h> int main(int arg,char *args[]) { char *s=getpass("input password:"); printf("your password :%s\n",s); return 0; }
相关文章推荐
- 嵌入式学习28(linux系统函数之文件、文件夹管理相关函数)
- 文件系统管理 之 Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍
- 文件系统管理 之 在Linux系统中存储设备的两种表示方法
- 实时管理 Linux - 使用 /proc 文件系统来控制系统
- Linux 磁盘与文件系统管理
- Linux入门五:磁盘及文件系统管理命令
- 实时管理Linux内核——使用 /proc 文件系统来控制系统
- 介绍Linux系统内核文件Cache管理机制
- linux 文件系统的管理 (硬盘) 工作原理
- linux系统管理学习笔记之八---linux文件与目录的管理及权限
- Linux下NFS网络文件系统设定及管理
- 深入理解和管理Linux文件系统
- Linux编程常用的函数(十一) 系统数据文件和信息
- Linux 下文件系统权限控制及管理
- (cc)2.6版本Linux上替换系统调用函数实现隐藏文件学习
- 粗谈LINUX下的文件系统管理
- 管理Linux系统日志文件工具:logrotate简介
- linux系统管理笔记之八--文件与目录操作及权限
- Linux入门六:磁盘及文件系统管理命令
- Linux常用命令备忘(启动管理、文件或目录管理、系统管理)