Linux服务器编程——Linux系统编程(2)之I/O函数
来源:互联网 发布:win7加密文件夹,软件 编辑:程序博客网 时间:2024/06/05 17:14
C库I/O函数
Linux系统IO函数
open函数头文件#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>
函数原型int open(const char* pathname,int flags)pathname:文件路径flags打开方式: 必选项O_RDONLY 以只读方式打开 O_WRONLY 以只读方式打开 O_RDWR 以读写方式打开 可选项O_CREAT 创建文件,必须指定mode O_EXCL 与O_CREATE同时使用,判断文件是否存在 O_TRUNC 将文件截断为0int open(const char * pathname,int flags,mode_t mode)mode:访问权限int create(const char* pathname,int flags)
close函数头文件#include <unistd.h>函数原型int close(int fd)fd:文件描述符
read函数头文件#include <unistd.h>函数原型ssize_t read(int fd, void* buf, size_t count)fd:文件描述符buf:数据缓冲区count:读取大小返回值-1:失败0:读完结束>0:读取的字节数
write函数头文件#include <unistd.h>函数原型ssize_t write(int fd,void* buf , size_t count)
fd:文件描述符
buf:数据缓冲区
count:字节lseek函数头文件#include <sys/types.h>#include <unistd.h>函数原型off_t lseek(int fd, off_t offset, int whence)fd:文件描述符offset:文件指针位置 SEEK_SET 文件开始位置 SEEK_CUR 当前 SEEK_END 结束whence:偏移量Linux文件操作相关函数
stat函数 作用:获取文件属性信息头文件#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>函数原型int stat(const char* path,struct stat *buf) -------穿透函数(相对于)软连接path:文件路径buf:文件路径struct stat{ dev_t st_dev; //文件设备编号 ino_t st_ino; //节点 mode_t st_mode; //文件的类型及存取权限 nlink_t st_nlink; //硬链接数目 uid_t st_uid //用户ID gid_t st_gid //组ID dev_t st_rdev //(设备类型),若为设备文件,则为设备编号 off_t st_size // 文件字节数 blksize_t st_blKsize // 块大小 blkcnt_t st_blkcnt // 快数 time_t st_atime // 最后一次访问时间 time_t st_mtime // 最后一次修改时间 time_t st_mtime // 最后一次更改属性时间};int fstat(int fd, struct stat *buf)int lstat(const char* path, struct stat *buf) ----------不穿透函数access函数作用:测试指定文件是否拥有某种权限头文件#include <unistd.h>函数原型:int access(const char* path, int mode)path:文件名mode:权限 R_OK 读权限 W_OK 写权限 X_OK 执行权限 F_OK 是否存在chmod函数作用:更改文件权限头文件#include <sys/stat.h>函数原型:int chmod(const char* path, mode_t mode)int fchmod(int fd, mode_t mode)strtol/strtoll函数头文件#include <stdlib>函数原型long int strtol(const char* nptr,char ** endptr, int base)long long strtoll(const char* nptr,char ** endptr, int base)chown函数头文件#include <unistd.h>函数原型int chown(const char* path,uid_t ower,gid_t group)int fchown(int fd,uid_t ower,gid_t group)int lchown(const char* path,uid_t ower,gid_t group)truncate函数作用:将参数path指定的文件大小改为length指定的大小头文件函数原型int truncate(const char* path, off_t length)link函数作用:创建一个硬链接头文件#include <unistd.h>函数原型int link(const char* old, char* new)symlink函数作用:创建一个硬链接头文件#include <unistd.h>函数原型int symlink(const char* old, char* new)readlink函数作用:读软连接的文件名头文件函数原型ssize_t resdlink(const char* path, char* buf, size_t size)unlink函数作用:删除链接数(软链接或硬链接),可用来创建临时文件头文件#include <unistd.h>函数原型int unlink(const char *pathname)rename函数头文件#include <stdio.h>函数原型int rename(const char* old, const char* new)目录操作函数
chdir函数作用:修改当前进程路径 cd头文件#include <unistd.h>函数原型int chdir(const char* path) int fchdir(int fd)getcwd函数作用:获得当前目录头文件#include <unistd.h> 函数模型char* getcwd(char* buf,size_t size)mkdir函数作用:创建的目录必须有执行权限,否则无法进入头文件#include <unistd.h> 函数模型int mkdir(const char* path, mode_t mode)rmdir函数作用:删除空目录头文件#include <unistd.h> 函数模型int rmdir(const char* path)opendir函数作用:打开一个目录头文件#include <sys/types.h>#include <dirent.h> 函数模型DIR *opendir(const char* path) 返回值NULL:失败非NULL:成功readdir函数作用:读目录头文件函数模型struct dirent *readdir(DIR* dirp)返回值: struct dirent { ino_t d_ino; //目录iNode off_t d_off; //目录文件开头到进入点的位移 signed short int d_reclen; //d-name长度 unsigned char d_type; //文件类型 DT_BLK 块设备 DT_CHR 字符设备 DT_DIR 目录 DT_LNK 软连接 DT_FIFO 管道 DT_REG 普通文件 DT_SOCK 套接字 DT_UNKNOWN 未知 D_BSD_SOURCE 编译时添加宏定义 char d_name[256] //文件名 }closedir函数作用:关闭函数头文件函数模型dup/dup2函数作用:复制文件描述符头文件#include <unistd,h>#define _GNU_SOURCE#include <fcntl.h>#include <unistd.h>函数原型int dup(int old)返回值:未被占用的最小文件描述符int dup2(int old, int new)注意:如果new是被打开的,在拷贝之前先关掉new 如果new和old是同一个fd,则直接返回fdint dup3(int old, int new , int flags)fcntl函数作用:改变已经打开的文件的属性头文件#include <fcntl.h>函数原型int fcntl(int fd,int cmd)int fcntl(int fd, int cmd, long arg)int fcntl(int fd, int cmd , struct flock *lock)功能描述:复制一个现有的描述符 cmd F_DUPFD获得/设置文件描述符标记 cmd F_GETFD F_SETFD获得/设置文件状态标记 cmd F_GETFL: O_RDONLY 只读 O_WRONLY 只写 O_RDWR 读写 O_EXEC 执行 O_SEARCH 搜索打开目录 O_APPEND 追加写 O_NONBLOCK 非阻塞模式 F_SETFL:可更改的几个标识 O_APPEND O_NONBLOCK
阅读全文
0 0
- Linux服务器编程——Linux系统编程(2)之I/O函数
- Linux系统编程(1)——文件与I/O之C标准I/O函数与系统调用I/O(尹成清华毕业生)
- Linux系统编程(1)——文件与I/O之C标准I/O函数与系统调用I/O
- Linux系统编程(1)——文件与I/O之C标准I/O函数与系统调用I/O
- linux系统编程之文件I/O
- Linux系统编程——系统调用之 I/O 操作(文件操作)
- Linux系统编程——系统调用之 I/O 操作(文件操作)
- Linux系统编程——系统调用之 I/O 操作(文件操作)
- Linux系统编程——系统调用之I/O操作(文件操作)
- Linux系统编程——系统调用之 I/O 操作(文件操作)
- Linux网络编程——tcp并发服务器(I/O复用之select)
- Linux网络编程——tcp并发服务器(I/O复用之select)
- linux系统编程之文件与I/O(六):fcntl 函数与文件锁
- linux系统编程之文件与I/O(六):fcntl 函数与文件锁
- linux系统编程之文件与I/O(五):fcntl 函数与文件锁
- linux系统编程之文件与I/O(六):fcntl 函数与文件锁
- Linux 高性能服务器编程——I/O复用
- Linux高性能服务器编程——I/O复用
- Gym-101612E E
- posgre的行列转换
- python 多进程 multiprocessing
- RMQ ST表学习笔记
- rails "column "traffic_total" cannot be cast automatically "报错解决方案
- Linux服务器编程——Linux系统编程(2)之I/O函数
- java、Set
- 微信朋友圈:应对春节千亿访问量背后的故事
- Java——关于static关键字的那些事总结
- spring学习笔记(一) --- 下载spring jar包
- Stack源码探讨(基于JDK1.8)
- Restrictions查询方法
- 响应式布局总结
- Hessian——轻量级远程调用方案