glibc源码分析之普通文件读写
来源:互联网 发布:笔记本风扇除尘软件 编辑:程序博客网 时间:2024/05/10 19:27
glibc中关于普通文件读写的函数有open,close,read,write,lseek,lseek64。它们分别封装了open,close,read,write,lseek,_llseek系统调用。
lseek用于在32位长度的文件中跳转,_llseek用于在64位长度的文件中跳转。
open函数的封装在前文中已经介绍了。
close函数定义在sysdeps/unix/sysv/linux/close.c文件中。
int__close (int fd){ return SYSCALL_CANCEL (close, fd);}libc_hidden_def (__close)strong_alias (__close, __libc_close)weak_alias (__close, close)
__close 函数调用了close系统调用。
read函数定义在sysdeps/unix/sysv/linux/read.c文件中
ssize_t__libc_read (int fd, void *buf, size_t nbytes){ return SYSCALL_CANCEL (read, fd, buf, nbytes);}libc_hidden_def (__libc_read)libc_hidden_def (__read)weak_alias (__libc_read, __read)libc_hidden_def (read)weak_alias (__libc_read, read)
__libc_read函数调用了read系统调用。
write函数定义在sysdeps/unix/sysv/linux/write.c文件中
ssize_t__libc_write (int fd, const void *buf, size_t nbytes){ return SYSCALL_CANCEL (write, fd, buf, nbytes);}libc_hidden_def (__libc_write)weak_alias (__libc_write, __write)libc_hidden_weak (__write)weak_alias (__libc_write, write)libc_hidden_weak (write)
__libc_write 函数调用了write系统调用。
lseek函数定义在sysdeps/unix/sysv/linux/lseek.c文件中。
static inline off_t lseek_overflow (loff_t res){ off_t retval = (off_t) res; if (retval == res) return retval; __set_errno (EOVERFLOW); return (off_t) -1;}off_t__lseek (int fd, off_t offset, int whence){ loff_t res; int rc = INLINE_SYSCALL_CALL (_llseek, fd, (long) (((uint64_t) (offset)) >> 32), (long) offset, &res, whence); return rc ?: lseek_overflow (res);}libc_hidden_def (__lseek)weak_alias (__lseek, lseek)strong_alias (__lseek, __libc_lseek)
__lseek 函数调用了_llseek系统调用。
lseek64函数定义在sysdeps/unix/sysv/linux/lseek64.c文件中。
off64_t__lseek64 (int fd, off64_t offset, int whence){ loff_t res; int rc = INLINE_SYSCALL_CALL (_llseek, fd, (long) (((uint64_t) (offset)) >> 32), (long) offset, &res, whence); return rc ?: res;}
__lseek64 调用了_llseek系统调用。
阅读全文
1 0
- glibc源码分析之普通文件读写
- glibc源码分析之文件的创建与删除
- glibc源码分析之stat系列函数
- glibc源码分析之stat64系列函数
- glibc源码分析之chmod系列函数
- glibc源码分析之truncate系列函数
- glibc源码分析之chown系列函数
- glibc源码分析之utime系列函数
- glibc源码分析之access函数
- glibc源码分析之rename函数
- glibc源码分析之statfs系列函数
- glibc源码分析之getpriority,setpriority,nice
- glibc源码分析之用户管理
- [glibc源码分析] bzero
- strlen glibc 源码分析
- glibc--memcpy源码分析
- glibc--strcpy源码分析
- glibc -- strlen源码分析
- Powershell 设置 Win2008Server IE的安全级别
- .net添加前端样式和JS添加标签样式、以及div/a 标签的显示和隐藏
- Android -- jar包混淆
- 【坑】什么是面向对象
- java 多线程研究:锁的概念
- glibc源码分析之普通文件读写
- mangodb本地安装和使用
- OCLint的部分规则(Basic 部分)
- 贪心法和动态规划法的区别
- 序列化二叉树
- Orleans简介
- spring 配置文件遇见了父子上下文
- 数据库学习纪要(五):hive-5
- CodeForces