当前位置: 首页 > news >正文

unix高级编程-fork之后父子进程共享文件

~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
这里我看到的是centos的操作,但我用的是debian系的ubuntu,百度了一下发现debian的在这里

在这里插入图片描述我们进文件看下
在这里插入图片描述这里执行的是.bashrc这个文件
这里可以吧系统编码改成可以识别中文的
export LC_ALL=zh_CN.UTF8
export LANG=$LC_ALL
在这里插入图片描述大家可以自行修改想要的编码,修改完重新执行一下用户文件,或者重启,或者重新登陆都是可以的

文件共享
我们要用open函数
我们这里用man查看手册
linux自带的工具 man 手册
man 1 是普通shell 的命令 比如 ls
man 2 是系统 调用函数 open write 说明
比如 查看 open 函数 :man 2 open
我们把包含的库文件粘贴上去
在这里插入图片描述open打开文件参数
在这里插入图片描述

我们放两个参数就可以了,第一个是文件指针(打开文件的路径),flags我们查看man手册,我们取O_RDWR读写属性
在这里插入图片描述

注意这里的文件流返回值int
我们再看下状态码
-1就是出错的
在这里插入图片描述

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>int main(void)
{    int fd;fd = open("./1.txt",O_RDWR);if(fd == -1){printf("打开文件失败!\n");return -1;       }else{printf("打开文件成功\n");    }return 0;}

在这里插入图片描述可以发现这里报错了
这里是因为open文件并不能创建
我们创建文件然后运行
在这里插入图片描述
write函数写入

#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <signal.h>
#include <errno.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/wait.h>
int main(void)
{    int fd;fd = open("./1.txt",O_RDWR);if(fd == -1){printf("打开文件失败!\n");return -1;       }else{printf("打开文件成功\n");    }pid_t pid;pid = fork();if(pid == -1){    printf("pid<0 err.\n");return -1;}else if(pid == 0){    printf("child:%d,parent:%d\n",getpid(),getppid());write(fd,"parent",6);   }else if(pid > 0){write(fd,"child",5);printf("Parent Process id: %d\n",getpid());wait(NULL); //等待子进程结束,再返回,()里面参数一般是空指针}return 0;}

执行完毕在这里插入图片描述我们可以看到两个进程都向这个文件写入数据了
在这里插入图片描述我们用for语句多写入几行

#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <signal.h>
#include <errno.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/wait.h>
int main(void)
{    int fd;fd = open("./1.txt",O_RDWR);if(fd == -1){printf("打开文件失败!\n");return -1;       }else{printf("打开文件成功\n");    }pid_t pid;pid = fork();if(pid == -1){    printf("pid<0 err.\n");return -1;}else if(pid == 0){    for(int i =0 ;i<1000;i++){write(fd,"parent  ",8);    }  printf("child:%d,parent:%d\n",getpid(),getppid());write(fd,"parent",6);   close(fd);         }else if(pid > 0){for(int i =0 ;i<1000;i++){write(fd,"child  ",7);    }        printf("Parent Process id: %d\n",getpid());wait(NULL); //等待子进程结束,再返回,()里面参数一般是空指针}close(fd);return 0;}

可以看到并发执行写入的顺序不可控,且是共享的
在这里插入图片描述注意这里又两个写入流子进程和父进程都需要close(fd)

相关文章:

unix高级编程-fork之后父子进程共享文件

~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件. 这里我看到的是centos的操作&#xff0c;但我用的是debian系的ubuntu&#xff0c;百度了一下发现debian的在这里…...

vue+echarts:柱状图横向展示和竖向展示

第021个点击查看专栏目录本示例是显示柱状图&#xff0c;分别是横向展示和纵向展示。关键是X轴和Y轴的参数互换。 文章目录横向示例效果横向示例源代码&#xff08;共81行&#xff09;纵向示例效果纵向示例源代码&#xff08;共81行&#xff09;相关资料参考专栏介绍横向示例效…...

SealOS 一键安装 K8S

环境 # 查看系统发行版 $ cat /etc/os-release NAME"CentOS Linux" VERSION"7 (Core)" ID"centos" ID_LIKE"rhel fedora" VERSION_ID"7" PRETTY_NAME"CentOS Linux 7 (Core)" ANSI_COLOR"0;31" CPE_NA…...

python网络编程详解

最近在看《UNIX网络编程 卷1》和《FREEBSD操作系统设计与实现》这两本书&#xff0c;我重点关注了TCP协议相关的内容&#xff0c;结合自己后台开发的经验&#xff0c;写下这篇文章&#xff0c;一方面是为了帮助有需要的人&#xff0c;更重要的是方便自己整理思路&#xff0c;加…...

ICRA 2023 | 首个联合暗光增强和深度估计的自监督方法STEPS

原文链接&#xff1a;https://www.techbeat.net/article-info?id4629 作者&#xff1a;郑宇鹏 本文中&#xff0c;我们提出了STEPS&#xff0c;第一个自监督框架来联合学习图像增强和夜间深度估计的方法。它可以同时训练图像增强网络和深度估计网络&#xff0c;并利用了图像增…...

基于react+nodejs+mysql开发用户中心,用于项管理加入的项目的用户认证

基于reactnodejsmysql开发用户中心&#xff0c;用于项管理加入的项目的用户认证用户中心功能介绍页面截图后端采用架构user表projects表project_user表仓库地址用户中心功能介绍 用户中心项目&#xff0c;用于统一管理用户信息、登录、注册、鉴权等 功能如下&#xff1a; 用…...

mapreduce与yarn

文章目录一、MapReduce1.1、MapReduce思想1.2、MapReduce实例进程1.3、MapReduce阶段组成1.4、MapReduce数据类型1.5、MapReduce关键类1.6、MapReduce执行流程1.6.1、Map阶段执行流程1.6.2、Map的shuffle阶段执行流程1.6.3、Reduce阶段执行流程1.7、MapReduce实例WordCount二、…...

鲲鹏云服务器上使用 traceroute 命令跟踪路由

traceroute 命令跟踪路由 它由遍布全球的几万局域网和数百万台计算机组成&#xff0c;并通过用于异构网络的TCP/IP协议进行网间通信。互联网中&#xff0c;信息的传送是通过网中许多段的传输介质和设备&#xff08;路由器&#xff0c;交换机&#xff0c;服务器&#xff0c;网关…...

代码随想录算法训练营第47天 || 198.打家劫舍 || 213.打家劫舍II || 337.打家劫舍III

代码随想录算法训练营第47天 || 198.打家劫舍 || 213.打家劫舍II || 337.打家劫舍III 198.打家劫舍 题目介绍 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&…...

JVM调优方式

对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。 1.Full GC 会对整个堆进行整理&#xff0c;包括Young、Tenured和Perm。Full GC因为需要对整个堆进行回收&#xff0c;所以比较慢&#xff0c;因此应该尽可能减少Full GC的次数。 2.导致Full GC的原因 1)年老…...

机器学习模型监控的 9 个技巧

机器学习 (ML) 模型是非常敏感的软件&#xff1b;它们的成功使用需要进行仔细监控以确保它们可以正常工作。当使用所述模型的输出自动做出业务决策时尤其如此。这意味着有缺陷的模型通常会对终端客户的体验产生真正的影响。因此&#xff0c;监控输入数据&#xff08;和输出&…...

Linux 实现鼠标侧边键实现代码与网页的前进、后退

前言 之前一直是使用windows进行开发&#xff0c;最近转到linux后使用VsCode编写代码。 但是不像在win环境下&#xff0c;使用鼠标侧边键可以实现代码的前向、后向跳转。浏览网页时也不行&#xff08;使用Alt Left可以后退&#xff09;。 修改键盘映射实在没有那么方便&…...

健身蓝牙耳机推荐,推荐五款适合健身的蓝牙耳机

出门运动健身&#xff0c;有音乐的陪伴是我们坚持运动的不懈动力&#xff0c;在健身当中佩戴的耳机&#xff0c;佩戴舒适度以及牢固程度是我们十分需要注意的&#xff0c;还不知道如何选择健身蓝牙耳机&#xff0c;可以看看下面这些运动蓝牙耳机分享。 1、南卡Runner Pro4骨传…...

Type-c诱骗取电芯片大全

随着Type-C的普及和推广&#xff0c;目前市面上的电子设备正在慢慢淘汰micro-USB接口&#xff0c;逐渐都更新成了Type-C接口&#xff0c;micro-USB接口从2007年上市&#xff0c;已经陪伴我们走过十多个年头&#xff0c;如今也慢慢退出舞台。 今天我们评测的产品是市面上Type-C…...

Scala模式匹配详解(第八章:基本语法、模式守卫、模式匹配类型)(尚硅谷笔记)

模式匹配第 8 章 模式匹配8.1 基本语法8.2 模式守卫8.3 模式匹配类型8.3.1 匹配常量8.3.2 匹配类型8.3.3 匹配数组8.3.4 匹配列表8.3.5 匹配元组8.3.6 匹配对象及样例类8.4 变量声明中的模式匹配8.5 for 表达式中的模式匹配8.6 偏函数中的模式匹配(了解)第 8 章 模式匹配 Scal…...

Linux:基于libevent读写管道代码

基于libevent读写管道代码&#xff1a; 读端&#xff1a; #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <string.h> #include <event2/event.h> #include…...

2022年中职网络安全逆向题目整理合集

中职网络安全逆向题目整理合集逆向分析&#xff1a;PE01.exe算法破解&#xff1a;flag0072算法破解&#xff1a;flag0073算法破解&#xff1a;CrackMe.exe远程代码执行渗透测试天津逆向re1 re2逆向分析&#xff1a;PE01.exe FTPServer20220509(关闭链接)  FTP用户名:PE01密码…...

Tencent OS下逻辑卷(LVM)增加硬盘扩容

上一篇文章写了逻辑卷创建以及使用剩余空间为已经创建的逻辑卷扩容。 本篇是针对卷组空间已经用尽时的扩容方法。那就是增加硬盘。 首先我们为虚拟机增加硬盘/dev/sdd 使用fdisk为/dev/sdd分区,方法在上一篇文章已经描述,在此不再赘述。 新增的硬盘使用如下命令添加到卷组…...

【Java】Spring的创建和使用

Spring的创建和使用 Spring就是一个包含众多工具方法的IOC容器。既然是容器&#xff0c;那么就具备两个最主要的功能&#xff1a; 将对象存储到容器中从容器中将对象取出来 在Java语言当中对象也叫作Bean。 1. 创建Spring项目 创建一个普通maven项目添加Spring框架支持(spri…...

【HTML】HTML 表单 ④ ( textarea 文本域控件 | select 下拉列表控件 )

文章目录一、textarea 文本域控件二、select 下拉列表控件一、textarea 文本域控件 textarea 文本域 控件 是 多行文本输入框 , 标签语法格式如下 : <textarea cols"每行文字字符数" rows"文本行数">多行文本内容 </textarea>实际开发中 并不…...

栈以及队列的详细讲解

1.栈的定义以及实现栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则。压栈&…...

Unity Android打包卡在detecting sdk tools version的根因与四套解决方案

1. 这个卡在“detecting current sdk tools version”的坑&#xff0c;我踩了三次才摸清门道 Unity打包时卡在“detecting current sdk tools version”这行日志上&#xff0c;光标静止、进度条不动、CPU占用率忽高忽低——你点开Android SDK目录&#xff0c;发现tools文件夹里…...

CentOS 7 SSH端口修改实战:SELinux、firewalld与密钥登录全闭环

1. 为什么改SSH端口不是“换把锁”&#xff0c;而是重构服务器的第一道防线很多人第一次接触Linux服务器安全&#xff0c;第一反应就是“改个SSH端口不就完事了&#xff1f;”——结果改完发现连不上&#xff0c;慌得重装系统&#xff1b;或者改完以为高枕无忧&#xff0c;三天…...

利用Taotoken模型广场为不同业务场景选择性价比最优的大模型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 利用Taotoken模型广场为不同业务场景选择性价比最优的大模型 在将大模型能力集成到实际业务的过程中&#xff0c;开发者常常面临一…...

企业ESG披露合规危机应对指南(2024欧盟CSRD强制落地倒计时)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;CSRD法规核心要义与企业合规临界点 欧盟《企业可持续发展报告指令》&#xff08;CSRD&#xff09;已于2024年1月1日正式生效&#xff0c;取代原有的NFRD&#xff0c;显著扩大了适用范围与披露深度。其核…...

2026年降AI工具支持文件格式横评:PDF与Word处理效果完整对比报告

2026年降AI工具支持文件格式横评&#xff1a;PDF与Word处理效果完整对比报告 总有人问降AI工具文件格式支持横评&#xff0c;这篇文章把主流几款对比清楚。 综合推荐嘎嘎降AI&#xff08;www.aigcleaner.com&#xff09;&#xff0c;4.8元&#xff0c;99.26%达标率。不同需求…...

昇腾CANN ops-transformer RoPE 旋转位置编码:从复数旋转到 NTK 外推的完整实战

Transformer 的自注意力机制本身对位置不敏感——"猫坐在垫子上"和"垫子坐在猫上"的 attention score 一样&#xff0c;因为点积 QK^T 不区分 token 顺序。位置编码就是给每个 token 打上它在序列中的位置标签。 RoPE&#xff08;Rotary Position Embeddin…...

DeepSeek模型权重完整性校验失效?揭秘SHA-3+SGX远程证明双因子加固新范式

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;DeepSeek模型安全加固 DeepSeek系列大语言模型在开源与商用场景中广泛应用&#xff0c;但其默认部署配置可能存在提示注入、越权推理、训练数据泄露及后门触发等安全风险。安全加固需从模型服务层、推理运行时…...

终极指南:用Whisky在Mac上免费运行Windows游戏与软件的完整方案

终极指南&#xff1a;用Whisky在Mac上免费运行Windows游戏与软件的完整方案 【免费下载链接】Whisky A modern Wine wrapper for macOS built with SwiftUI 项目地址: https://gitcode.com/gh_mirrors/wh/Whisky 还在为Mac无法运行Windows专属软件而烦恼吗&#xff1f;W…...

揭秘AI教材写作技巧!低查重AI工具助力,3天完成50万字教材!

教材创作中AI工具的应用与优势 在教材编写的过程中&#xff0c;确保原创性与合规性的平衡是一个至关重要的问题。一方面&#xff0c;借鉴已有教材的优秀内容时&#xff0c;创作者往往会担心查重率超标&#xff1b;另一方面&#xff0c;自主进行原创知识点的阐释&#xff0c;又…...