程序3-5 对一个文件描述符打开一个或多个文件状态标志
1 //http://blog.chinaunix.net/uid-24549279-id-71355.html 2 /* 3 ============================================================================ 4 Name : test.c 5 Author : blank 6 Version : 7 Copyright : Your copyright notice 8 Description : 程序3-5 对一个文件描述符打开一个或多个文件状态标志 9 ============================================================================ 10 */ 11 12 #include <stdio.h> 13 #include <unistd.h> 14 #include <fcntl.h> 15 #include "ourhdr.h" 16 17 /* 18 * flags are file status flags to turn on 19 */ 20 void set_f1(int fd, int flags){ 21 int val; 22 23 if ((val = fcntl(fd, F_GETFD, 0)) < 0){ 24 err_sys("fcntl F_GETFD error\n"); 25 } 26 27 // turn on 28 val |= flags; 29 30 if (fcntl(fd, F_SETFD, val) < 0){ 31 err_quit("fcntl F_SETFL error\n"); 32 } 33 } 34 35 /* 36 * flags are file status flags to turn off 37 */ 38 void del_f1(int fd, int flags){ 39 int val; 40 41 if ((val = fcntl(fd, F_GETFD, 0)) < 0){ 42 err_sys("fcntl F_GETFD error\n"); 43 } 44 45 // turn off 46 val &= ~flags; 47 48 if (fcntl(fd, F_SETFD, val) < 0){ 49 err_quit("fcntl F_SETFL error\n"); 50 } 51 }