zoukankan      html  css  js  c++  java
  • 第三章:fcntl 函数详解

    功能:根据描述符来获取或设置 操作文件时 的属性

     

     1 #include<stdio.h>
     2 #include<unistd.h>
     3 #include<fcntl.h>
     4 
     5 int
     6 main(void)
     7 {
     8         int             fd0,fd;
     9         int             flag;
    10         if(-1==(fd0 = open("fcntl.c",O_RDONLY))){
    11                 printf("open failed\n");
    12                 return  -1;
    13         }
    14 
    15         //复制文件描述符到fd
    16         printf("复制文件描述符:\n");
    17         fd = 100;
    18         fcntl(fd0,F_DUPFD,fd);
    19         close(fd0);
    20 
    21         //获取/设置文件描述符的标志
    22         printf("获取文件描述符的标志:\n");
    23         flag = fcntl(fd,F_GETFD);
    24         printf("F_GETFD1        :       flag = %d\n",flag);
    25         fcntl(fd,F_SETFD,flag|FD_CLOEXEC);
    26         flag = fcntl(fd,F_GETFD);
    27         printf("F_GETFD2        :       flag = %d\n",flag);
    28 
    29         //获取设置文件状态标志 , 注意 : 只能改O_APPEND  O_NONBLOCK O_SYNC 
    30         //O_DSYNC   O_RSYNC  O_FSYNC  O_ASYNC  这几个标志
    31         printf("获取设置文件状态标志:\n");
    32         flag = fcntl(fd,F_GETFL);
    33         printf("F_GETFL1        :       stat = %o\n",flag);
    34         fcntl(fd,F_SETFL,flag|O_APPEND);
    35         flag = fcntl(fd,F_GETFL);
    36         printf("F_GETFL2        :       stat = %o\n",flag);
    37 
    38         //获取/设置接收 SIGIO  和 SIGURG 信号的进程ID 或 进程组ID
    39         //(设置异步I/O所有权)
    40 printf("设置异步I/O所有权:\n"); 41 flag = fcntl(fd,F_GETOWN); 42 if(flag >= 0) 43 printf("F_GETOWN1 : own = %d\n",flag); 44 else45 printf("F_GETOWN1 : grp = %d\n",flag); 46 47 fcntl(fd,F_SETOWN,1); 48 49 flag = fcntl(fd,F_GETOWN); 50 if(flag >= 0) 51 printf("F_GETOWN2 : own = %d\n",flag); 52 else53 printf("F_GETOWN2 : grp = %d\n",flag); 54 55 56 57 close(fd); 58 return 0; 59 }

     

    F_GETOWN  :  当返回的是进程组ID 的时候 , ID 值为 负值 , 但返回的是进程ID 的时候, 返回的值为 非负值

    还有设置文件锁的功能 :

        xxxxxxxxxxxxxxxxxxxxxxxxxxxx

     

  • 相关阅读:
    常见的几种性能测试指标及计算公式
    性能测试分析
    性能测试的流程
    性能测试的基本知识
    Python的深拷贝、浅拷贝
    Http基础知识
    求List<int>中相等且连续的偶数的索引
    unity资源打包之后配置的生成
    unity在资源打包的时候,关于 hash 计算的简单总结
    C#中string.Join的用法
  • 原文地址:https://www.cnblogs.com/wowk/p/3107188.html
Copyright © 2011-2022 走看看