Linux——进程练习

1、使用进程知识点,尝试完成如下功能:

输入n, 动态生成n个子进程,并打印输出各自进程的pid号。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>#include <sys/types.h>int main(int argc, char *argv[])
{int n =3;int i = 0 ;for(i=0;i<n;i++){pid_t pid = fork();if(pid>0){continue;}else if(0 == pid){printf("child, pid:%d ppid:%d\n",getpid(),getppid());exit(0);}else {perror("fork");return 1;}}printf("father pid:%d, ppid:%d\n",getpid(),getppid());return 0;
}

2、设计一个程序,动态生成两个进程,分别向相同的文件中写入不同的数据,要表明是两个进程同时写入的数据。
./a.out ===> 1.txt ==>父进程写入的信息 时间+编号(father pid)/a.out时间+编号(child pid)父进程1123 186 16:02:10子进程1124 188 16:02:15

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>#include <sys/types.h>
#include <time.h>
#include <dirent.h>
int do_count()
{DIR* dir = opendir("/proc");if(NULL == dir){perror("opendir");exit(1);}int num=0;while(1){struct dirent* info = readdir(dir);if(NULL == info){break;}if(DT_DIR == info->d_type  ){if(info->d_name[0]>'0' && info->d_name[0]<'9'){num++;}}else{continue;}}closedir(dir);return num;
}
int main(int argc, char *argv[])
{FILE* fp = fopen("1.txt","w");if(NULL == fp){perror("fopen");exit(1);}time_t tm;int n = 3;pid_t pid = fork();if(pid>0){while(n--){int num=do_count();time(&tm);fprintf(fp,"father %d %d %s",getpid(),num,ctime(&tm));fflush(fp);sleep(3);}}else if(0 == pid){while(n--){int num=do_count();time(&tm);fprintf(fp,"child %d %d %s",getpid(),num,ctime(&tm));fflush(fp);sleep(5);}}else {perror("fork");return 1;}fclose(fp);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/861904.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux下创建Oracle数据库的实例

1.安装前准备 1.1.安装前准备一 安装前准备信息 数据库版本&#xff1a;Oracle19.16.0.0.0Linux版本&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo)主机名&#xff1a;ace-test-84IP&#xff1a;10.10.10.212SID&#xff1a;dcpfareintservice_name&#x…

电机应用相关名词介绍

1.电机转速 定义&#xff1a;电机转速指电机工作时旋转的速度&#xff0c;是衡量电机性能的重要指标之一。 单位&#xff1a; 每分钟转数&#xff08;RPM&#xff09;&#xff1a;即Revolutions Per Minute&#xff0c;表示电机每分钟旋转的圈数。 每秒转数&#xff08;RPS…

【小工具】Unity批量删除物体上引用丢失的脚本

介绍 Unity批量删除物体上引用丢失的脚本 使用场景 当在外部导入资源时会造成物体上挂载的脚本引用丢失&#xff0c;一个个删除比较麻烦&#xff0c;可以借用这个工具快速实现 工具原理 继承EditorWindow绘制一个自定义的编辑器窗口 加载Assets目录下所有预制体 获取其所有…

畜牧机械5G智能制造工厂物联数字孪生平台,推进制造业数字化转型

畜牧机械5G智能制造工厂物联数字孪生平台&#xff0c;推进制造业数字化转型。畜牧机械5G智能制造工厂物联数字孪生平台&#xff0c;是近年来制造业数字化转型的杰出代表。工业物联数字孪生平台平台集成了物联网、大数据、云计算和人工智能等先进技术&#xff0c;通过高速、低延…

elk对于集群实例的日志的整合-基于filebeat+k8s采集日志

说明&#xff1a;基于filebeat采集日志 概述&#xff1a; 在Kubernetes环境中&#xff0c;Filebeat不需要和业务服务部署在同一个容器中。通常的做法是将Filebeat作为一个DaemonSet部署在集群中&#xff0c;这样它可以在每个节点上运行一个实例&#xff0c;并从所有容器中收集…

Ubuntu下TensorRT与trtexec工具的安装

新版&#xff08;这里测试的是10.1版&#xff09;的onnx转tensorrt engine工具trtexec已经集成在TensorRT中&#xff0c;不需要额外单独安装。 教程来源于此网页&#xff1a;https://medium.com/moshiur.faisal01/install-tensorrt-with-command-line-wrapper-trtexec-on-unun…

redis需要知道的点

目录 一、为什么要用缓存 二、使用 Redis有哪些好处 三、什么是 redis&#xff1f; 四、redis和memcached区别 五、为什么redis单线程模型效率也能那么高 六、redis的线程模型 七、redis 6.0 引入多线程 八、为什么Redis需要把所有数据放到内存中&#xff1f; 九、Red…

cad由于找不到mfc140u.dll的解决方法,彻底解决mfc140u.dll丢失问题

在计算机辅助设计&#xff08;CAD&#xff09;的时候&#xff0c;我们可能会遇到各种错误和问题。其中&#xff0c;“CAD由于找不到mfc140u.dll&#xff0c;无法继续执行代码”的错误提示。这个问题可能会导致CAD无法启动运行&#xff0c;因此&#xff0c;我希望通过分享我的经…

site 搜索技巧 指定网站 屏蔽网站

指定某网站内容&#xff1a;site:xxx 屏蔽某网站内容&#xff1a;-site:xxx 例如&#xff1a;搜 springboot项目demo&#xff0c;你想只搜csdn&#xff0c;屏蔽掉博客园&#xff0c;51cto&#xff0c;等&#xff0c;在输入框中输入如下&#xff1a; springboot项目demo site:c…

基于elastic stack搭建的ELK系统资源占用预估

1、ES 1.1 内存&#xff1a;ES非常消耗内存&#xff0c;不是JVM用到的内存,而是机器的物理内存,ES在运行期间对JVM Heap(堆内存)的需求较小 实践建议: 数据量过百万,建议单台服务器的内存至少要有16GB;数据量过亿,建议单台服务器的内存至少要有64GB 1.2 CPU&#xff1a;ES集…

计算机网络之数据通信原理(下)

上一讲内容&#xff1a;数据传输方式、数据传输形式、传输差错处理、常用差错检测方法 数据通信过程中&#xff0c;一个很重要的问题就是如何控制数据的传输&#xff0c;就涉及到了传输控制规程&#xff08;协议&#xff09; 下面介绍两种&#xff1a; ①BSC&#xff1a;面向…

鸿蒙 HarmonyOS NEXT星河版APP应用开发-阶段一

一、鸿蒙开发环境搭建 DevEco Studio安装 下载 访问官网&#xff1a;https://developer.huawei.com/consumer/cn/deveco-studio/选择操作系统版本后并注册登录华为账号既可下载安装包 安装 建议&#xff1a;软件和依赖安装目录不要使用中文字符软件安装包下载完成后&#xff0…

GGUF模型转换入门

一、定义 1 定义 2 案例 二、实现 定义 GGUF是一种大模型文件格式&#xff0c;由开发者Georgi Gerganov提出。 这是一种针对大规模机器学习模型设计的二进制格式文件规范。它的主要优势在于能够将原始的大模型预训练结果经过特定优化后转换成这种格式&#xff0c;从而可以更…

鸿蒙Harmony开发实战案例:使用OpenGL绘制3D图形

XComponent控件常用于相机预览流的显示和游戏画面的绘制,在OpenHarmony上&#xff0c;可以配合Native Window创建OpenGL开发环境&#xff0c;并最终将OpenGL绘制的图形显示到XComponent控件。本文将采用"Native C"模板&#xff0c;调用OpenGL ES图形库绘制3D图形&…

python之__call__函数介绍

Python 中的 __call__ 方法是一种特殊的方法,它允许对象像函数一样被调用。当你创建一个对象并使用括号 () 调用它时,Python 会自动调用这个对象的 __call__ 方法。 1. 基本用法 下面是一个简单的例子: class MyClass:def __init__(self, value):self.value valued…

yaml文件的介绍-K8S

yaml 文件是我们使用K8S管理应用程序常用的部署方式&#xff0c;它主要是通过一系列键值对组成&#xff0c;键和值使用冒号和空格分隔。以下是对yaml的介绍 首先我们可以使用命令生成一个简单的YAML模版文件 Kubectl run nginx-pod –imagenginx:latest –port80 –dry-runcli…

使用FRP 0.58版本进行内网穿透的详细教程

什么是FRP&#xff1f; FRP&#xff08;Fast Reverse Proxy&#xff09;是一款高性能的反向代理应用&#xff0c;主要用于内网穿透。通过FRP&#xff0c;您可以将内网服务暴露给外网用户&#xff0c;无需进行复杂的网络配置。 准备工作 服务器&#xff1a;一台具备公网IP的服…

CSS基础学习记录(6)

目录 1、从最基本的页面开始 2、添加图像/浮层部分 3、位置调整 4、添加动效 4.1、添加浮层动效 4.2、添加背景动画 根据前面css的学习&#xff0c;本篇来实践下前面学习的知识&#xff0c;主要实现如下这样的效果。 下面我们一步步实现上面的效果。 1、从最基本的页面开…

Redis 缓存问题及解决

所有问题解决的关键就是尽少的访问数据库&#xff0c;或者避免太集中的访问。 一&#xff0c;缓存穿透&#xff08;key在数据库不存在&#xff09; 当数据既不在缓存中&#xff0c;也不在数据库中&#xff0c;导致请求访问缓存没数据&#xff0c;访问数据库也没数据&#xff0c…

理解java AWT中的FlowLayout的使用

目录 背景: 代码示例: 代码详细解析: 总结: 背景: 在java的AWT(Abstract Window Toolkit)库中&#xff0c;Frame和FlowLayout是两个常用的类&#xff0c;它们分别用于创建窗口和设置窗口内组件的布局&#xff0c;下面的代码示例&#xff0c;解释Frame和FlowLayout的基本用…