AUPE学习第三章------文件I/O2

从这里开始。用的是APUE第三版。从第三版65页开始:

3.14fcntl函数

在修改文件描述符标志和文件状态标志时必须谨慎,先要取得现有的标志值,然后根据需要修改它,最后设置新值。
程序3-5:对一个文件描述符设置一个或者多个文件状态标志函数。
#include "apue.h"
#include <fcntl.h>
#include "error.c"
void set_f1(int fd, int flags)
{
    int val;
    if ((val = fcntl(fd, F_GETFL, 0)) < 0)
        err_sys("fcntl F_GETFL ERROR");
    val |= flags;   /*trun on flags*/
    if (fcntl(fd,F_SETFL, val) < 0)
        err_sys("fcntl F_SETFL error)");
}
fsync和fdatasync在我们需要时更新文件内容,O_SYNC标志则在我们每次写至文件时更新文件内容。

3.15ioctl函数

ioctl函数是I/O操作的杂物箱,终端I/O是ioctl函数最大使用方面。
#include   <unistd.h>
#include <sys/ioctl.h>
#include <stropts.h>
int     ioctl(int    filedes,   int   request,   ...)  //出错返回-1,成功返回其他值。
这个函数主要用于设备的操作。

3.16   /dev/fd

这个目录中的文件时用数字来表示的。如1   2   3 等。
打开文件/dev/fd/n等效于复制描述符n(假设描述符n是打开的)。
用法:
fd  =  open("/dev/fd/0",   mode)   但是大部分系统忽略它所指定的mode。
等价于  fd   =  dup(0);  所以描述符0和fd共享同一个文件表项。










  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值