//使用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;
}

C语言函数参数既做出参又做入参的代表的更多相关文章

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

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

  2. C语言函数参数压栈顺序为何是从右到左?(从左向右的话,碰到printf的会陷入死循环)

    上学期学习了汇编语言,并在操作系统实验中使用了汇编+C语言混合编程,中间也了解了一些C语言与汇编语言的对应关系. 由于汇编语言是底层的编程语言,各种函数参数都要直接控制栈进行存取,在混合编程中,要用汇 ...

  3. C语言函数参数的传递详解

    一.三道考题 开讲之前,我先请你做三道题目.(嘿嘿,得先把你的头脑搞昏才行--唉呀,谁扔我鸡蛋?)考题一,程序代码如下:void Exchg1(int x, int y){   int tmp;    ...

  4. C语言 函数参数不确定时 需要用到va_start和va_end函数

    1.在C中,当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表 void foo(...);void foo(parm_list,...); 这种方式和我们以前认识的不大一样,但我 ...

  5. C 语言函数参数只能传指针,不能传数组

    今天被要求编写一个C/C++冒泡算法的程序,心想这还不是手到擒来的事儿,虽然最近都是用Javascript程序,很少写C/C++程序,但是好歹也用过那么多年的C语言: 首先想的是怎么让自己的代码看上去 ...

  6. c语言函数参数类似继承的传递

    函数的参数如果是一个父结构的指针, 这个结构包含在另一个子结构中, typedef struct test_node_one test_node_one_t; typedef struct test_ ...

  7. lr参数与C语言函数参数的区别

    C变量不能再lr函数中使用: c变量必须定义在lr函数之前: LR参数可以在LR函数中直接当做字符串使用. LR参数是lr自己封装的一个钟对象, LR参数的表达方式:{ParamName}

  8. C语言通过函数参数不能带出动态内存的例子。

    实验结论:通过函数参数不能带出动态内存,函数参数虽然为指针,其实是在函数内部的临时变量,只是该指针的初始值是通过调用函数赋值的.C语言函数参数都是传值的. #include <stdio.h&g ...

  9. c语言中函数参数入栈的顺序是什么?为什么

    看到面试题C语言中函数参数的入栈顺序如何? 自己不知道,边上网找资料.下面是详细解释 #include <stdio.h> void foo(int x, int y, int z){   ...

随机推荐

  1. PHP概率算法(适用于抽奖、随机广告)

    做网站类的有时会弄个活动什么的,来让用户参加,既吸引用户注册,又提高网站的用户活跃度.同时参加的用户会获得一定的奖品,有100%中奖的,也有按一定概率中奖的,大的比如中个ipad.iphone5,小的 ...

  2. C++编译器默默编写并调用哪些函数

    什么时候empty class(空类)不再是个empty class呢?当C++处理过它之后,是的,如果你自己没有声明,编译器就会为它声明(编译器版本)一个copy构造函数.一个copy assign ...

  3. Android基本控件之ListView(二)<ListView优化>

    之前我们说到ListView的基本用法.但是,有很多的时候会额外的占用一些内存,从而消耗了性能.既然有消耗性能的可能,那么我们就对其做出相应的优化 我们首先来说说优化的步骤: 第一步.将宽和高设置为填 ...

  4. 电商ERP如何接入智选物流平台?

    智选物流是综合地址库+时效库+逻辑库(成本.订单属性.仓库)选择出最优快递,通过多家快递网点地址库精准数据,点对点的运输时间,各种行业包裹的所有快递价格逻辑,不同产品类型.支付方式等分析,实现不同仓库 ...

  5. Divisibility

    Description Consider an arbitrary sequence of integers. One can place + or - operators between integ ...

  6. Steps to disable DRLs with GM Tech2 scanner

    It is possible to get daytime running time disabled manually. But the problem can be easily settled ...

  7. 接收POst数据流数据

    var data = "";                using (StreamReader readStream = new StreamReader(context.Re ...

  8. RMI学习

    前段时间学习JMX,知道可以使用rmi连接器,就顺便看下rmi是什么东西,RMI 全称Remote Method Invocation-远程方法调用,实现远程对象之间的调用,下面原理图来自网络 服务器 ...

  9. shareplex的安装&&起停服务(添加新用户)

    一.主机环境   主从类型 系统版本 数据库版本 主机地址 主机名 源数据库 Centos6.4 X86_64 11.2.0.4.0 192.168.3.230 dbshareplex 目的数据库 C ...

  10. LeetCode 75

    Sort Colors Given an array with n objects colored red, white or blue, sort them so that objects of t ...