int open ( const char *pathname ,int flags,. . ./* mode_t mode */ ) int opent(int dirfd ,const char *pathname ,int flags,. . ./* mode_t mode */ )//可以使用相对路径打开文件 返回值:
成功返回文件描述符,失败返回 -1.
int creat(const char *pathname , mode_t mode )
返回值:
成功返回文件描述符 ,失败返回-1
参数:
pathname:打开文件的路径字符串
flags:打开文件的方式
mode:使用时(mode& ~umask)
int close(int fd)
返回值:
成功返回0,失败返回-1
参数:
fd:已打开的文件描述符
off_t lseek(int fd , off_t offset ,int whence) 返回值:
成功返回0,失败返回-1
参数:
pathname:打开文件的路径字符串
offset:偏移量
whnence:SEEK_SET/SEEK_CUR/SEEK_END
ssize_t read(int fd , void *buf ,size_t count )
返回值:
成功返回读到的字节数,若到达文件末尾返回0,出错返回-1。
参数:
buf:缓冲区存放读取的数据
count:请求读取的字节数
ssize_t write(int fd, const void *buf ,size_t count )
返回值:
成功返回已写的字节数,出错返回-1。
int dup (int oldfd);
功能:
通过 oldfd 复制出一个新的文件描述符,新的文件描述符是调用进程文件描述符表中最小可用的文件描述符,最终 oldfd 和新的文件描述符都指向同一个文件。
参数:
oldfd: 需要复制的文件描述符 oldfd
返回值:
成功:新文件描述符
失败:-1
int dup2(int oldfd, int newfd);
功能:
通过 oldfd 复制出一个新的文件描述符 newfd,如果成功,newfd 和函数返回值是同一个返回值,最终 oldfd 和新的文件描述符 newfd 都指向同一个文件。
参数:
oldfd: 需要复制的文件描述符
newfd: 新的文件描述符,这个描述符可以人为指定一个合法数字(0-1023),如果指定的数子已经被占用(和某个文件有关联),此函数会自动关闭 close() 断开这个数字和某个文件的关联,再来使用这个合法数字。
返回值:
成功:返回 newfd
int fsync (int fd); int fdatasync (int fd);//只影响数据部分,不更新文件属性返回值:
成功返回0 ,出错返回-1
int fcntl (int fd , int cmd , ../* arg */);
返回值:
成功返回值取决于cmd,出错返回-1
cmd的取值可以如下:
- 复制文件描述符
F_DUPFD (long)
- 设置/获取文件描述符标志
F_GETFD (void)-
F_SETFD (long)
- 设置/获取文件状态标志
F_GETFL (void)
F_SETFL (long)
- 获取/设置文件锁
F_GETLK
F_SETLK,F_SETLKW
- 文件描述符的标志
FD_CLOEXEC
int ioctl(int fd, ind cmd, …);
ioctl函数是文件结构中的一个属性分量,就是说如果你的驱动程序提供了对ioctl的支持,用户就可以在用户程序中使用ioctl函数控制设备的I/O通道。
参数:
fd:用户程序打开设备时使用open函数返回的文件标示符,
cmd:用户程序对设备的控制命令,至于后面的省略号,那是一些补充参数,一般最多一个,有或没有是和cmd的意义相关的。
返回值:
ioctl函数的实现是根据命令执行的一个switch语句,但是,当命令不能匹配任何一个设备所支持的命令时,通常返回-EINVAL(非法参数);下表列出了网络相关ioctl 请求的request 参数以及arg 地址必须指向的数据类型:
类别
Request
说明
数据类型
套
接
口
SIOCATMARK
SIOCSPGRP
SIOCGPGRP
是否位于带外标记
设置套接口的进程ID 或进程组ID
获取套接口的进程ID 或进程组ID
int
int
int
文
件
FIONBIN
FIOASYNC
FIONREAD
FIOSETOWN
FIOGETOWN
设置/ 清除非阻塞I/O 标志
设置/ 清除信号驱动异步I/O 标志
获取接收缓存区中的字节数
设置文件的进程ID 或进程组ID
获取文件的进程ID 或进程组ID
int
int
int
int
int
接
口
SIOCGIFCONF
SIOCSIFADDR
SIOCGIFADDR
SIOCSIFFLAGS
SIOCGIFFLAGS
SIOCSIFDSTADDR
SIOCGIFDSTADDR
SIOCGIFBRDADDR
SIOCSIFBRDADDR
SIOCGIFNETMASK
SIOCSIFNETMASK
SIOCGIFMETRIC
SIOCSIFMETRIC
SIOCGIFMTU
SIOCxxx
获取所有接口的清单
设置接口地址
获取接口地址
设置接口标志
获取接口标志
设置点到点地址
获取点到点地址
获取广播地址
设置广播地址
获取子网掩码
设置子网掩码
获取接口的测度
设置接口的测度
获取接口MTU
(还有很多取决于系统的实现)
struct ifconf
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
ARP
SIOCSARP
SIOCGARP
SIOCDARP
创建/ 修改ARP 表项
获取ARP 表项
删除ARP 表项
struct arpreq
struct arpreq
struct arpreq
路
由
SIOCADDRT
SIOCDELRT
增加路径
删除路径
struct rtentry
struct rtentry
流
I_xxx