使用fcntl函数完成,set_fl和clr_fl()函数的封装,设置文件的属性,例如:阻塞IO模型 和 非阻塞IO模型
#include <stdio.h>
#include "io.h"
void set_fl(int fd, int flags) /* flags are file status flags to turn on */
{
int val;
if ( (val = fcntl(fd, F_GETFL, 0)) < 0)
{
printf("fcntl F_GETFL error");
exit(1);
}
val |= flags; /* turn on flags */
//重新设置文件状态标志(val为新文件的文件状态标志)
if (fcntl(fd, F_SETFL, val) < 0)
{
printf("fcntl F_SETFL error");
exit(1);
}
}
void clr_fl(int fd, int flags)
{
int val;
if ((val = fcntl(fd, F_GETFL, 0)) == -1)
{
perror("fcntl error!");
exit(1);
}
val &= ~flags; /* turn flags off */
if (fcntl(fd, F_SETFL, val) == -1)
{
perror("fcntl error!");
exit(1);
}
return;
}