LinuxIO

1|0与cIO对比

2|0虚拟地址空间

用完即释放
分内核区,用户区

3|0文字描述符

在进程内核区Linux kernel(PCB)
最大打开1024
多次打开描述符不一样


4|0IO常规函数

查看 man 2 int open(const char*pathname,int flags}; # flags: 对文件操作权限和其他设置;O_RDONLY,O_WRONLY,o_RDWR互斥 # errno Linux中记录最近的错误序号,全局变量 void perror(const int *s):打印错误序列 int open(const char *pathname,int flags , mode_t mode) # flags: 对文件操作权限和其他设置;O_RDONLY,O_WRONLY,o_RDWR互斥,可选O_CREATE #mode 八进制的数 读入 ssize_t read(int fd,void *buf,size_t count); buf存放地址 count指定数组大小 ssize_t write(int fd,void *buf,size_t count); buf写入数据 count指定数组大小

5|0其他函数

int fseek(FILE *stream,long offset, int whence); off_lseek(int fd, off_t offset,int whence); ##offset偏移量 作用 lseek(fd,0,SEEK_SET) 移到指针到文件头 lseek(fd,0,SEEK_CUR) 当前位置 lseek(fd,0,SEEK_END) 获取长度 lseek(fd,100,SEEK_END) 拓展文件长度100字节

查看文件信息 stat cmd可用 int stat(const char *pathname,struct stat *statbuf); 输出软链接文件信息结构体 int lstat(const char *pathname,struct stat *statbuf); 输出硬链接文件信息结构体

硬链接和源文件是同一份文件而软连接是独立的文件,类似于快捷方式,存储着源文件的位置信息便于指向。 使用限制上,不能对目录创建硬链接,不能对不同文件系统创建硬链接,不能对不存在的文件创建硬链接; 可以对目录创建软连接,可以跨文件系统创建软连接,可以对不存在的文件创建软连接

5|1文件属性相关

判断文件权限 int access(const char *pathname,int mode); #mode R_OK,W_OK,X_OK(EXE),F_OK(是否存在) 修改权限 int chmod(const char *pathname,int mode); 修改所在组 int chown(const char *pathname,uid_t owner, git_t group); vim /etc/password 修改文件大小 int truncate(const char *path,off_t length);

5|2文件目录相关

09/目录操作函数 int mkdir(const char *pathname,mode_t mode) ; #mode 八进制的数 int rmdir (const char *pathname) ; int rename (const char *oldpath,const char *newpath); 修改进程工作目录 int chdir(const char *path) ; 获取当前工作目录, char *getcwd (char *buf, size_t size) ; #size大小 打开目录 DIR *opendir (const char *name); #DIR型变量 读取目录中的数据 struct dirent *readdir(DIR *dirp); struct dirent{ //此目录进入点的inodeino_t d_ino; //目录文件开头至此目录进入点的位移off_t d_off; l l d_name的长度,不包含NULL字符unsigned short int d_reclen;ll d_name所指的文件类型 unsigned char d_type;//文件名 char d_name [ 256]; } ; 关闭目录 int closedir(DIR *dirp) ;

5|3文件描述符相关

int dup (int oldfd); 复制文件描述符 int dup2 (int oldfd, int newfd) ; 重定向文件描述符 oldfd指向a.txt, newfd指向b.txt 调用函数成功后: newfd和 b.txt做close,newfd指向了a.txt int fcntl (int fd, int cmd, ... /* arg * / ); 复制文件描述符 int fcntl(int df,F_DUPFD) 设置/获取文件的状态标志 指定 int fcntl(int df,F_GETFL) #状态参考open里的flags 设置 int fcntl(int df,F_SETFL) 必选项:O_RDONLY,O_WRONLY,O_RDWR不可以被修改 可选:O_APPEND,O_NONBLOCK O_APPEND表示追加数据 NONBLOK设置成非阻塞 flag |= O_APPEND

__EOF__

本文作者InsiApple
本文链接https://www.cnblogs.com/InsiApple/p/15965361.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   InsiApple  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示