Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >两个不同的C程序正在访问一个文件

两个不同的C程序正在访问一个文件
EN

Stack Overflow用户
提问于 2013-07-04 05:13:38
回答 3查看 122关注 0票数 0

我在Linux平台上有一个应用程序,它需要服务器程序不断地将数据写入bin文件。同时,另一个程序需要读取写入的值。如果我在读写过程中没有锁定文件,我应该担心吗?

EN

回答 3

Stack Overflow用户

发布于 2013-07-04 05:20:04

你应该关注一下。我假设您确定没有其他程序(除了您问题中提到的两个可执行文件)正在访问该文件。您确实应该锁定以序列化该访问。使用flock(2)或使用fcntl(2)lockf(3)

顺便说一句,文件是按顺序读写的吗?你有没有考虑过使用一些更高级的东西,例如GDBM或者像mariadbpostgresqlmongodb这样的数据库,等等……

票数 2
EN

Stack Overflow用户

发布于 2013-07-04 06:21:56

一切都取决于你的需求是什么?可以修改服务器进程吗?如果是这样的话,你有无限的可能性。这是一个研究得很好的问题,进程间通信,wikipedia IPC

否则,在我自己的测试程序中,似乎不需要锁定来让生产者和消费者对同一文件进行操作。这只是轶事证据,我不能保证。

制片人:

代码语言:javascript
运行
AI代码解释
复制
int main() {
    int fd = open("file", O_WRONLY | O_APPEND);

    const char * str = "str";
    const int str_len = strlen(str);
    int sum = 0;
    while (1) {
        sum += write(fd, str, str_len);
        printf("%d\n", sum);
    }
    close(fd);
}

消费者:

代码语言:javascript
运行
AI代码解释
复制
int main() {
    int fd = open("file", O_RDONLY);

    char buf[10];
    const int buf_size = sizeof(buf);
    int sum = 0;
    while (1) {
        sum += read(fd, buf, buf_size); 
        printf("%d\n", sum);
    }
    close(fd);
}

(include:) #include #include #include

这个程序假设"file“已经存在。

票数 0
EN

Stack Overflow用户

发布于 2013-07-04 07:17:10

为了补充这里已经说过的内容,请查看您的操作系统文档。原则上,在读取时应该没有问题,如果读取是原子的(即在操作过程中没有任务切换),应该是可以的。另外,操作系统可能有自己的限制和锁,所以要小心。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17462309

复制
相关文章
Shell脚本循环读取文件中的每一行
While循环中read命令从标准输入中读取一行,并将内容保存到变量line中。在这里,-r选项保证读入的内容是原始的内容,意味着反斜杠转义的行为不会发生。输入重定向操作符< file打开并读取文件file,然后将它作为read命令的标准输入。
卡尔曼和玻尔兹曼谁曼
2019/01/22
5.6K0
R语言 读取文件
使用R读取txt文件直接使用read.table()方法进行读取即可,不需要加载额外的包。
用户1359560
2018/08/27
2.4K0
R语言  读取文件
Python Numpy 从文件中读取数据
测试文件内容(test1.txt) hello,123,nihao 8,9,10 io,he,no 测试代码 import numpy # dtype:默认读取数据类型,delimiter:分隔符 world_alcohol = numpy.genfromtxt("test1.txt", dtype=str, delimiter=",") # 数据结构 print(type(world_alcohol)) # 数据内容 print(world_alcohol) # 帮助文档 print(help(nump
山海散人
2021/03/03
4.3K0
R读取gmt文件
前面我们简单介绍过什么是gmt文件,基因矩阵转置文件格式(* .gmt)。今天我们就用R来去读gmt文件。
生信交流平台
2020/08/06
7.3K0
R读取gmt文件
android r文件丢失_读取文件
在用Eclipse做开发的时候,总是无缘无故缺少R文件,让整个项目报废,在网上查了资料后现在做一下整理。
全栈程序员站长
2022/11/09
1.2K0
pyspark之从HDFS上读取文件、从本地读取文件
hdfs上的路径: path="hdfs:///主机名:端口号/地址" 本地上的路径: path"file:///本地地址" 读取文件: rdd=sc.textFile(path)
西西嘛呦
2020/08/26
5.2K0
R-批量文件读取
文件的批量读取,一般在拿到数据时,如果是大批量的数据,那么就需要多次的读取 10个文件以为的内容通过10行的内容可以读取,但是如果是上百个文件,那么读取的 时候就比较复杂,解决思路是通过循环进行读取
火星娃统计
2020/09/15
6920
matlab读取mnist数据集(c语言从文件中读取数据)
mnist database(手写字符识别) 的数据集下载地:http://yann.lecun.com/exdb/mnist/。
全栈程序员站长
2022/08/01
5K0
matlab读取mnist数据集(c语言从文件中读取数据)
fgets 一次读取一行数据
上一篇文章我们介绍过一次性读取一个字符,这样读取更加精确,但有不同的需求,比如需要一次读取一行或一段。本文将介绍如何一次读取一行内容,提供了两个函数,并分析了两个函数的区别。
我与梦想有个约会
2023/10/20
2630
Python读取文件的最后一行(非空行)
利用Python读取文件(针对大文件和小文件两种)的首行(第一行)和末行(最后一行)。脚本借鉴了前人的两种处理思路(在下面的脚本中有注释说明引用出处),并修正了原先两种处理方法中如果文件末尾含有多个空行而返回空行的问题。
py3study
2020/01/07
4.2K0
R语言技巧:读取excel文件
前面介绍了另外一种读取excel文件的方式,可以对比下。 采用gdata包来读取。
努力在北京混出人样
2019/02/18
2.6K0
使用一行Python代码从图像读取文本
处理图像不是一项简单的任务。对你来说,作为一个人,很容易看着某样东西然后马上知道你在看什么。但电脑不是这样工作的。
磐创AI
2019/12/23
1.6K0
使用一行Python代码从图像读取文本
Nodejs中读取文件目录中的所有文件
关于Nodejs中的文件系统即File System可以参考官方Node.js v12.18.1的文档File system
ccf19881030
2020/06/28
14.8K0
从wlan_mac.bin文件中读取MAC地址
/vendor/qcom/opensource/wlan/qcacld-3.0/Android.mk
用户7557625
2020/07/16
4.1K0
java pfx,如何从Java中的PFX文件读取公钥[通俗易懂]
I am able to read private key from PFX file but not public key. I am using following code to read public key.
全栈程序员站长
2022/08/14
4.8K0
R语言:快速读取txt文件
用R语言来读取600多M的txt文件,使用常用的read.table,太费时间。想起之前用readr包来读取csv、spss的、sas、excel的很快,便尝试了翻。
努力在北京混出人样
2019/02/18
4.4K0
R数据读取(数据文件解析)
1,控制读入的数据行数,非批处理,有点类似数据库中的指标操作,可对文件中的数据逐行操作。
云深无际
2020/10/23
2.5K0
R数据读取(数据文件解析)
R语言读取 xlsx 和xls 文件
xlsx文件,是2007,2013,2016版本的Excel文件,R语言中可以通过openxlsx包进行读取。
邓飞
2020/07/22
11.4K0
python从txt文件读取数据
  (作为一个python初学者,记录一点学习期间的笔记,方便日后查阅,若有错误或者更加便捷的方法,望指出!)
py3study
2020/01/19
3.9K0
python从txt文件读取数据
点击加载更多

相似问题

更新SQLITE表

10

SQLite Studio -使用联接进行更新

20

SQLite连接字符串中使用的“默认超时”值是什么?

10

将“空”字符串更新为实际空值

10

通过比较日期和字符串值来更新列

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文