![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux application
文章平均质量分 65
macoracle
这个作者很懒,什么都没留下…
展开
-
IO fcntl
fcntl 以read终端设备为例介绍了非阻塞I/O,没有直接对STDIN_FILENO做非阻塞read,而是重新open一遍/dev/tty,因为STDIN_FILENO在程序启动时已经被自动打开了,而我们需要在调用open时指定O_NONBLOCK标志。这里介绍另外一种办法,可以用fcntl函数改变一个已打开的文件的属性,可以重新设置读、写、追加、非阻塞等标志(这些标志称为File Status Flag),而不必重新open文件。 #include #include int fcntl(i翻译 2010-09-03 07:07:00 · 452 阅读 · 0 评论 -
文件IO dup/dup2
dup和dup2函数 dup和dup2都可用来复制一个现存的文件描述符,使两个文件描述符指向同一个file结构体。如果两个文件描述符指向同一个file结构体,File Status Flag和读写位置只保存一份在file结构体中,并且file结构体的引用计数是2。如果两次open同一文件得到两个文件描述符,则每个描述符对应一个不同的file结构体,可以有不同的File Status Flag和读写位置。请注意区分这两种情况。 #include int dup(int oldfd); int dup翻译 2010-09-02 22:36:00 · 597 阅读 · 0 评论 -
IO ioctl
ioctl ioctl用于向设备发控制和配置命令,有些命令也需要读写一些数据,但这些数据是不能用read/write读写的,称为Out-of-band数据。也就是说,read/write读写的数据是in-band数据,是I/O操作的主体,而ioctl命令传送的是控制信息,其中的数据是辅助的数据。例如,在串口线上收发数据通过read/write操作,而串口的波特率、校验位、停止位通过ioctl设置,A/D转换的结果通过read读取,而A/D转换的精度和工作频率通过ioctl设置。 #include i翻译 2010-09-03 07:09:00 · 494 阅读 · 0 评论 -
IO lseek
lseek 每个打开的文件都记录着当前读写位置,打开文件时读写位置是0,表示文件开头,通常读写多少个字节就会将读写位置往后移多少个字节。但是有一个例外,如果以O_APPEND方式打开,每次写操作都会在文件末尾追加数据,然后将读写位置移到新的文件末尾。lseek和标准I/O库的fseek函数类似,可以移动当前读写位置(或者叫偏移量)。 #include #include off_t lseek(int fd, off_t offset, int whence); 参数offset和whence的翻译 2010-09-03 07:11:00 · 434 阅读 · 0 评论