//使用fcntl对文件进行加锁
#include "stdio.h"
#include "unistd.h"
#include "fcntl.h"

int main()
{
    int fd;
    struct flock lk;
    int r;
    fd=open("a.txt", O_RDWR);
    if (fd==-1)
    {
        fd=open("a.txt", O_RDWR|O_CREAT|O_EXCL, 0666);
        if (fd==-1)
        {
            perror("File Open Error");
            exit(2);
        }
    }
    lk.l_type=F_WRLCK;
    lk.l_whence=SEEK_SET;
    lk.l_start=5;
    lk.l_len=10;
    r=fcntl(fd, F_SETLK, &lk);           //lk在这里是传入参数
    if (r==0)
    {
         printf("Lock Sussess!\n");
    }
    else
    {
        printf("Lock Failed!\n");
    }
    while (1);                         //不能让程序退出
    return 0;
}

//使用fcntl读取文件锁

#include "stdio.h"
#include "unistd.h"

#include "fcntl.h" 
 
int main()
{
    int fd;
    struct flock lk={0};
    int r;
    fd=open("a.txt", O_RDWR);
    if (fd==-1)
    {
        perror("Error");
        exit(0);
    }
    r=fcntl(fd, F_GETLK, &lk);     //lk在这里是传出参数
    if (r==0)
    {
        printf("Get Lock Success!\n");
    }
    if (lk.l_type==F_WRLCK)
    {
        printf("Write Lock!\n");
    }
    printf("start:%d, len:%d\n", lk.l_start, lk.l_len);
    return 0;
}

转载于:https://www.cnblogs.com/zhangwuliang/p/4179636.html

C语言函数参数既做出参又做入参的代表相关推荐

  1. c语言函数参数从右往左,C语言函数入参压栈顺序为什么是从右向左?

    看到有人提问到,在处理printf/cout时,压栈顺序是什么样的?大家都知道是从右往左,也就是说从右往左的计算,但是,这里的计算不等于输出. a++和++a的压栈的区别:在计算时,遇到a++会记录此 ...

  2. Swift 1.1语言函数参数的特殊情况本地参数名外部参数名

    Swift 1.1语言函数参数的特殊情况本地参数名外部参数名 7.4  函数参数的特殊情况 声明定义有参函数时,为函数的每一个参数都定义了参数名称.根据参数名定义的形式不同,函数参数包括本地参数和外部 ...

  3. C语言 | 函数参数

    C语言函数参数 C语言函数的参数可以是变量.变量指针和变量引用. //如下#include<stdio.h> int maxNumber(int x,int y); //此处括号里的x y ...

  4. C语言函数参数入栈顺序

    C语言函数参数入栈顺序从右到左是为了方便可变参数函数. 一.在函数调用时,函数参数的传递,在C语言中是通过栈数据结构实现的. 在调用函数时,先根据调用函数使用的参数,自右向左依次压入栈中,然后调用函数 ...

  5. C语言函数参数压栈顺序为何是从右到左?

    #转载自:http://blog.csdn.net/jiange_zh 上学期学习了汇编语言,并在操作系统实验中使用了汇编+C语言混合编程,中间也了解了一些C语言与汇编语言的对应关系. 由于汇编语言是 ...

  6. C/C++语言函数参数里的“...”作用,va_list的使用(stdarg.h)

    以Linux "man 手册"里的printf函数声明为例,谈谈我对C语言函数的可变参数的一点理解. printf的函数声明如下:int printf(const char *fo ...

  7. c语言函数参数的含义,C语言函数的含义

    C语言函数的含义 C语言的发展颇为有趣,它的原型ALGOL 60语言.那么大家知道C语言函数是什么吗?下面一起来看看! 函数(Function)是一段可以重复使用的代码,这是从整体上对函数的认识. C ...

  8. c语言函数参数缺省,C++缺省参数和函数重载

    参数的缺省值 在C++中参数可以设置缺省值,设置了缺省值之后,这个参数在调用时可以省略. 注意:设置缺省值的参数只能是最后的几个参数.也就是说某一个参数一旦设置了缺省值,其后而的参数也必须设置缺省值. ...

  9. c语言中函数参数为空是什么意思,C语言函数参数为空和void

    C语言中函数参数的为空和用void标注他们的效果一样吗? #include 2 //int add(); 3 int add(void); 4 int main(void) 5 { 6     int ...

最新文章

  1. Nature调查 l 中国博士生们的科研围城
  2. 记录一次CPLD资源过少、时序伪例的解决办法
  3. 查询进程并杀死该进程
  4. 微信和html5的使用感觉,微信小程序和HTML5相比有何不同呢?
  5. Android AsyncTask两种线程池分析和总结
  6. WebAPI 2参数绑定方法
  7. python蒙特卡洛模拟_基于Python的21点游戏蒙特卡洛模拟
  8. 最优视频监控软件开发的实现方法
  9. leetcood学习笔记-107-二叉树的层次遍历二
  10. Spring MVC处理用户请求的完整流程
  11. PU-Net: Point Cloud Upsampling Network
  12. 25服务端_手把手教你使用 OpenResty 搭建高性能服务端!
  13. [已解决]Hibernate程序未终止
  14. iOS开发GCD(3)-数据安全
  15. MySQL数据增加语句
  16. 新计算机安装系统后鼠标键盘都无反应处理
  17. 计算机只能在安全模式下起动,电脑不能进入正常的XP系统,只能在安全模式下启动?...
  18. springcloud数据库密码加密
  19. fMRI与MRI区别+名词解释+MRI中T1和T2的含义与区分
  20. (四)以太坊——运用truffle框架部署第一个DAPP ---- Pet-Shop

热门文章

  1. java 数组的冒泡排序
  2. 转 CentOS下php安装mcrypt扩展
  3. install scrapy with pip and easy_install
  4. Smarty foreach
  5. 对于XLS碎片提取的深入研究
  6. json数据交换的例了
  7. 使用MONGODB 集群的OPLOG 日志进行数据恢复
  8. Android 自定义控件 ViewPager头部指示器控件 ViewPagerBelowIndicator
  9. android Formatter 的使用
  10. [res].xml格式