Linux-----进程处理(文件IO资源使用)

server/2024/12/28 7:54:03/

 下面代码是通过父进程和子进程对同一个文件IO资源进行操作,父进程和子进程都对这个进程进行写入操作,我们都知道这两个进程实际上是并发的,所以需要一个同步机制来去操作同一个资源(后面再深入去说明同步的api,这里使用延时就可以解决了),解释如下:

 

#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h> 
#include <unistd.h>
#include <fcntl.h>
#include <string.h>int main(int argc, char const* argv[])
{int fd = open("./io.txt", O_CREAT | O_WRONLY | O_APPEND, 0644);if (fd == -1) {perror("open");exit(EXIT_FAILURE);}char buffer[1024]; // 文件读取缓冲区pid_t pid = fork();if (pid < 0) {perror("fork");exit(EXIT_FAILURE);}// 子进程else if (pid==0){strcpy(buffer, "这是子进程写入的数据\n");}// 父进程else {sleep(1);strcpy(buffer, "这是父进程写入的数据\n");}// 父子进都执行的代码ssize_t byte_wirte = write(fd, buffer, strlen(buffer));if (byte_wirte == -1) {perror("write");close(fd);exit(EXIT_FAILURE);}// 使用完毕资源后关闭printf("写入数据成功\n");close(fd);if (pid == 0) {printf("子进程写入完毕\n");}else {printf("父进程写入完毕\n");// close(fd);}return 0;
}


http://www.ppmy.cn/server/153851.html

相关文章

【Postgresql】数据库忘记密码时,重置密码 + 局域网下对外开放访问设置

【Postgresql】数据库忘记密码时,重置密码 + 局域网下对外开放访问设置 问题场景数据库忘记密码时,重置密码局域网下对外开放访问设置问题场景 Postgresql可支持复杂查询,支持较多的数据类型,在生产中较为使用。但有时在局域网下,想通过外部连接使用数据库,可能会出现数…

platform_msi使用

以下代码是OpenEuler/olk-6.6分支的&#xff0c;和linux实现有区别 1.为设备绑定irq_domain(可选) 如果设备是通过dts/acpi上报的&#xff0c;创建设备的时候就已经绑过了&#xff0c;不需要自己手动绑&#xff0c;只需要设置msi之前判断一下就行 if (!dev->msi.domain) {…

爬虫数据存储:Redis、MySQL 与 MongoDB 的对比与实践

爬虫的核心任务是从网络中提取数据&#xff0c;而存储这些数据是流程中不可或缺的一环。根据业务需求的不同&#xff0c;存储的选择可能直接影响数据处理的效率和开发体验。本文将介绍三种常用的存储工具——Redis、MySQL 和 MongoDB&#xff0c;分析它们的特点&#xff0c;并提…

海康RGBD相机使用C++和Opencv采集图像记录

海康RGBD相机使用C和Opencv采集图像记录 RGBD相机型号&#xff1a;MV-EB435i 配置&#xff1a;1.Vs2019 2.Opencv4.6 一、安装客户端 1.下载链接 HiViewer 2.官方Samples 安装后&#xff0c;在帮助-development中&#xff0c;可以看到一些samples&#xff0c;但是这些样例…

windows安装mongodb

一.安装包准备 1.服务端下载 https://www.mongodb.com/try/download/communitya 按需选择&#xff0c;我们这里选择社区版 直接点download浏览器下载可能比较慢&#xff0c;可以尝试copy link后用三方下载软件&#xff0c;会快很多。 2.命令行客户端安装 https://www.mong…

线性代数行列式

目录 二阶与三阶行列式 二元线性方程组与二阶行列式 三阶行列式 全排列和对换 排列及其逆序数 对换 n阶行列式的定义 行列式的性质 二阶与三阶行列式 二元线性方程组与二阶行列式 若是采用消元法解x1、x2的话则得到以下式子 有二阶行列式的规律可得&#xff1a;分…

问题小记-达梦数据库报错“字符串转换出错”处理

最近遇到一个达梦数据库报错“-6111: 字符串转换出错”的问题&#xff0c;这个问题主要是涉及到一条sql语句的执行&#xff0c;在此分享下这个报错的处理过程。 问题表现为&#xff1a;一样的表结构和数据&#xff0c;执行相同的SQL&#xff0c;在Oracle数据库中执行正常&#…

【每日学点鸿蒙知识】线程创建、构造函数中创建变量仍报错、List上下拖拽,调用JS代码、无法选择本地csr文件问题

1、HarmonyOS 如何创建一个单线程&#xff1f; 请问 worker 是单线程还是多线程&#xff1f;如果 worker 不是单线程&#xff0c;如何创建一个单线程呢&#xff1f; ArkTS是单线程模型&#xff0c;所以worker也是单线程&#xff0c;他是在宿主线程上创建的一个子线程&#xf…