歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

《APUE》:打印指定的描述符的文件標志

《Unix環境高級編程》這本書附帶了許多短小精美的小程序,我在閱讀此書的時候,將書上的代碼按照自己的理解重寫了一遍(大部分是抄書上的),加深一下自己的理解(純看書太困了,呵呵)。此例子在Ubuntu 10.04上測試通過。

相關鏈接

  • 《UNIX環境高級編程》(第二版)apue.h的錯誤 http://www.linuxidc.com/Linux/2011-04/34662.htm
  • Unix環境高級編程 源代碼地址 http://www.linuxidc.com/Linux/2011-04/34826.htm
  1. //《Unix環境高級編程》程序3-4:打印指定的描述符的文件標志   
  2. #include <stdio.h>     
  3. #include <string.h>     
  4. #include <fcntl.h>     
  5. #include <unistd.h>     
  6. #include <stdlib.h>   
  7.     
  8. int main(int argc, char **argv)    
  9. {    
  10.     int val;    
  11.     if( argc != 2 )    
  12.     {    
  13.         fprintf(stderr, "Usage: a.out <descriptor#>");    
  14.         exit(1);    
  15.     }    
  16.     //改變已打開的文件的性質     
  17.     val = fcntl( atoi(argv[1]), F_GETFL, 0);    
  18.     if( val < 0 )    
  19.     {    
  20.         fprintf(stderr, "fcntl error for fd %d", atoi(argv[1]));    
  21.         exit(1);    
  22.     }    
  23.     
  24.     //打印所選擇文件的標志說明     
  25.     switch(val & O_ACCMODE)    
  26.     {    
  27.     case O_RDONLY:    
  28.         printf("Read Only");    
  29.         break;    
  30.     case O_WRONLY:    
  31.         printf("write only");    
  32.         break;    
  33.     case O_RDWR:    
  34.         printf("read write");    
  35.         break;    
  36.     default:    
  37.         fprintf(stderr, "unknow access mode");    
  38.         exit(1);    
  39.     }    
  40.     
  41.     if( val & O_APPEND )    
  42.         printf(", append");    
  43.     if( val & O_NONBLOCK )    
  44.         printf(", nonblocking");    
  45.     
  46. #if defined(O_SYNC)     
  47.     if( val & O_SYNC )    
  48.         printf(", synchronous writes");    
  49. #endif     
  50.     
  51. #if !defined(_POSIX_C_SOURCE) && defined(O_FSYNC)     
  52.     if( val & O_FSYNC )    
  53.         printf(", synchronous writes");    
  54. #endif     
  55.     putchar('\n');    
  56.     return 0;    
  57. }    
Copyright © Linux教程網 All Rights Reserved