linux c编程文件枷锁
关键函数:lockf,fileno
#include <iostream>
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
#include <stdbool.h>
#include <wait.h>
#include <stdlib.h>#define PROCNUM 5
#define BUFF_SIZE 32void fileLockTest();using namespace std;int main() {//forkTest1();fileLockTest();return 0;
}
void func_add(){FILE *fp;char buf[BUFF_SIZE] = {0};int num;if( NULL == (fp = fopen("fileAdd.txt","r+"))){perror("fopne()");return;}int fd = fileno(fp);lockf(fd,F_LOCK,0);//文件加锁fgets(buf,BUFF_SIZE,fp);num = atoi(buf);num ++;fseek(fp,0,SEEK_SET);fprintf(fp,"%d\n",num);fflush(fp);//刷新缓冲流sleep(1);lockf(fd,F_ULOCK,0);//文件解锁fclose(fp);
}void fileLockTest(){int i = 0;pid_t pid;for(i = 0; i < PROCNUM; i ++){ //创建PROCNUM个进程pid = fork();if(pid < 0){perror("fork()");exit(1);}if(0 == pid){ //子进程func_add();exit(0);}}for(i = 0; i < PROCNUM; i ++){ //回收PROCNUM个进程wait(NULL);}
}
linux c编程文件枷锁相关推荐
- 外网访问arm嵌入式linux_嵌入式Linux系统编程——文件读写访问、属性、描述符、API
Linux 的文件模型是从 Unix 的继承而来,所以 Linux 继承了 UNIX 本身的大部分特性,然后加以扩展,本章从 UNIX 系统接口来描述 Linux 系统结构的特性. 操作系统是通过一系 ...
- 4. linux调用文件计算阶乘前5项和_嵌入式Linux系统编程——文件读写访问、属性、描述符、API
Linux 的文件模型是从 Unix 的继承而来,所以 Linux 继承了 UNIX 本身的大部分特性,然后加以扩展,本章从 UNIX 系统接口来描述 Linux 系统结构的特性. 操作系统是通过一系 ...
- Linux系统编程-文件的操作
Linux系统编程-文件操作 前言: Linux 中所有内容都是以文件的形式保存和管理的,即一切皆文件,普通文件是文件,硬件设备(键盘.监视器.硬盘.打印机)是文件,就连套接字(socket).网络通 ...
- linux系统编程——文件编程
linux系统编程--文件编程 文章目录 linux系统编程--文件编程 一.如何创建.修改一个文件 二.linux系统调用的API 三.文件描述符 四.linux系统调用 1.创建文件-creat ...
- Linux系统编程@文件操作(一)
只总结了部分常用的内容,详细内容参考<UNIX环境高级编程>及相关书籍. Linux中文件编程可以使用两种方法 Linux系统调用(依赖于系统) C语言库函数(不依赖于系统) Linux系 ...
- linux 文件操作 编程,Linux系统编程------------文件操作(基础)
一.文件操作 1.1 Linux文件系统结构 1.1.1 Linux常见系统目录 /bin : 存放普通系统可执行的命令(ls wc等) /sbin : 存放系统管理程序(fsck等) /b ...
- Linux环境编程--文件基本操作
Linux 下目录是/这样的 而windows是\怎么记呢?\和w是不是一样的反向?所以Linux的目录就是反的反向,好记了. 一:open函数 名称: open 目标: 打开一个文件. 头文件: ...
- linux 打开关闭文件,Linux系统编程-文件打开关闭
一.文件描述符 对于Linux而言,所有对设备或文件的操作都是通过文件描述符进行的.当打开或者创建一个文件的时候,内核向进程返回一个文件描述符(非负整数).后续对文件的操作只需通过该文件描述符,内核记 ...
- Linux网络编程--文件描述符
文件描述符 在Unix和Unix-like操作系统中,文件描述符(file descriptor, FD)是一个文件或者像pipe或者network socket等之类的输入/输出源的唯一标识. 文件 ...
最新文章
- iOS封装HTTPS双向和单向验证
- 《The Art of Readable Code》 读书笔记 01
- OpenStack 架构图
- Intel® Media Server Studio Support
- 如何使用 Java 生成二维码?
- Java:main()函数调用类中方法的限制
- 3.2.1 虚拟内存的基本概念
- Python 字典的操作
- PointConv论文阅读笔记
- Python中的各种if语句(if条件判断、if...else、if...elif...else、if...else嵌套)
- [Java] 蓝桥杯ALGO-42 算法训练 送分啦
- Armadillo的安装
- 用户是如何浏览你的网站的
- 53.Linux/Unix 系统编程手册(下) -- POSIX 信号量
- C调用Python的示例代码
- echarts的用法
- SUDA歌单管理软件,支持Spotify\Tidal\QQ\网易云导入导出歌单
- mysql归档模式_数据库归档模式设置步骤
- Java编写一个公司员工类
- 导航背景变换 php,jQuery实现的背景动态变化导航菜单效果
热门文章
- 平衡二叉树 treap
- 蓝牙AOA高精度定位基站原厂深圳核芯物联科技参加2021中国国际高新技术成果交易会诚邀生态合作伙伴莅临交流指导2021.12.27-29深圳宝安国际会展中心11号馆
- 关于 国产麒麟系统运行Qt,在命令行可以运行而双击无法运行(无反应) 的解决方法
- 我的2019年计划清单
- 怎么用python编写记事本_利用Python开发实现简单的记事本
- 南加大计算机本科学费,南加州大学学费多少
- mysql打平子表_对于oracle进行简单树查询(递归查询)
- 20162316刘诚昊 10月9日“查找课堂测试”
- Revi开发 - 碰撞检测
- 1002模拟赛订正(待更)