关于文件读写冲突问题的探索

本文探讨了在多线程、多进程环境下可能出现的文件写入冲突问题。作者通过在Ubuntu上进行实验,发现四个进程在写入文件时能够独立完成,没有出现写入中断或冲突的现象。然而,作者指出这只是一个特定实例,仍需要更深入的理论分析来确认这种情况的普遍性。
摘要由CSDN通过智能技术生成

我在写日志记录时,项目当然是多线程、多进程的。有时候会出fwrite.c错误(windows 下面),项目中除了日志会对文件进行读写而外,没有文件读内容,所以第一个想法就是:是不是日志写发生冲突了? 虽然这种错误的情况比较少,但还是引起了我的注意,于是我有一个问题:多进程、多线程对文件进行写操作会不会发生写冲突?

为此我在 ubuntu上做了一下试验,代码如下:

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(int argc,char *argv[]){
  printf("hello\n");
  int i=0 ;
  int file = open("myte",O_RDWR | O_CREAT);
  char  buf[50] ="0123456789abcdefghijklmnopqrstuvwxyz\r\n" ;
  if(file<0){
    perror("open file error");
    exit(-1);
  }
  int fd = fork();
  if(fd<0){
    perror("fork error");
    exit(-1);
  }
  if(fd>0){
    int fd01 = fork();
    for(i =1000;i>0;i--)
      if(fd01)
      { write(file,"pid01:0123456789abcdefghijklmnopqrstuvwxyz01234567
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值