阻塞、非阻塞: 是设备文件、网络文件的属性。
-
产生阻塞的场景。 读设备文件。读网络文件。(读常规文件物阻塞概念)
-
/dev/tty--终端文件。
-
open("/dev/tty",O_RDWR|O_NONBLOCK) ----设置 /dev/tty 非阻塞状态。(默认为阻塞状态)
-
fcnt1:
int flgs=fcnt1(fd, F_GETFL);
int flgs=fcntl(fd,F_GETFL);
flgs |= O_NONBLOCK
fcntl(fd,F_SETFL,flgs)
获取文件状态:F_GETFL
设置文件状态:F_SETFL
lesek函数:
off_ lseek(int fd,off_t offset,int whence);
参数:
-
-
fd:文件描述
-
offset:偏移量
-
whence:起始偏移位置:SEEK_SET/SEEK_CUR/SEEK_END
-
返回值:
-
成功:较起始位置偏移量
-
失败:-1 errno
应用场景:
-
1.文件的“读”、“写”使用同一偏移量。
-
2.使用lseek获取、拓展文件大小。
-
使用lseek拓展文件大小:要想使文件大小真正拓展,必须引起IO操作。
-
使用truncate 函数:直接拓展文件。 int ret=truncate("dick.CP",250);
-