Linux进程(一)

news2024/9/19 15:30:46

目录

  • 一.进程的介绍
    • 1.引出进程
    • 2.进程的介绍
  • 二.创建进程
    • 1.创建进程的原理
    • 2.什么是fork函数
      • (1).通过手册查看fork
    • 3.例子

一.进程的介绍

1.引出进程

Google Chrome
Google Chrome 是一个进程
Google Chrome 底下的选项是多个线程

Ubuntu
通过top命令可以查看正在运行的进程

2.进程的介绍

  • 课本概念
    程序的一个执行实例,正在执行的程序
  • 内核观点
    担当分派系统资源(CPU 时间, 内存)的实体

二.创建进程

1.创建进程的原理

创建新进程在Linux下是是由父进程完成的,创建完成的新进程是子进程.

新的进程的地址空间有两种可能性:

  • 子进程是父进程的复制品(除了PID和task_struct是子进程自己的,其余的都从父进程复制而来)
  • 子进程装入另一个程序

在Linux下的fork函数用于创建一个新的进程,使用fork函数来创建一个进程时,子进程只是完全复制父进程的资源。这样得到的子进程和父进程是独立的,具有良好的并发性。但是进程间通信需要专门的机制

2.什么是fork函数

(1).通过手册查看fork

在这里插入图片描述

  • NAME

    创建一个子程序

  • SYNOPSIS

#include <sys/types.h>
#include <unistd.h>
pid_t fork(void);
  • 函数说明:

通过复制调用进程创建一个新进程:

fork 有两个返回值

父子进程代码共享,数据各自私有一份(采用写时拷贝)

  • 返回值说明

如果成功则会给父进程返回子进程的PID,给子进程返回0
如果失败的话则会给父进程返回-1

3.例子

#include <sys/wait.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
  
int main(){
      pid_t pid=fork();                                                                                         
      if(pid==-1)exit(1);
      if(pid==0){
          printf("fork:%d %d\n",getpid(),getppid());
          exit(5);
      }else{
          printf("main:%d %d\n",getpid(),getppid());
      }                                                                                                         
      return 0;                                                                                                 
  }    

结果
在这里插入图片描述

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

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

相关文章

F5云安全防护能力如何?一文为你解惑

伴随云计算的快速发展&#xff0c;云安全已成为实施云战略的重要保障。来自F5 SOAS报告的调查显示&#xff0c;近三分之二的企业将使用AI和机器学习划入优先事项&#xff0c;并把云安全列为最关键的应用场景。作为一家提供多云应用安全和应用交付的公司&#xff0c;F5的云安全防…

python实现微信聊天图片DAT文件还原

完整代码如下&#xff1a; from glob import glob import os from tqdm import tqdmdef get_sign(dat_r):signatures [(0x89, 0x50, 0x4e), (0x47, 0x49, 0x46), (0xff, 0xd8, 0xff)]mats [".png", ".gif", ".jpg"]for now in dat_r:for j, x…

嵌入式行业,中年危机是否存在?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」&#xff0c;点个关注在评论区回复“666”之后私信回复“666”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 肯定有&#xff0c;你看到的…

嵌入式人工智能(40-基于树莓派4B的水滴传感器和火焰传感器)

虽然这两个传感器水火不容&#xff0c;我还是把他们放到一起了。本文是有线传感器的最后一个部分了。后面如果还有文章介绍有线传感器&#xff0c;也是补充学习其他内容不得已而为之。如果不是&#xff0c;就当我没说&#xff0c;哈哈。 1、水滴传感器 水滴传感器又称雨滴传感…

实现字母的大小写转换。多组输入输出(c语言)

1.我们先输入字母&#xff08;用getchar的函数&#xff09;&#xff0c;判断是不是字母&#xff0c;我们可以用a<tmp<z或者A<tmp<Z,注意&#xff1a;小写转换大写用tmp-32&#xff0c;大写转换小写用tmp32.. #include<stdio.h> int main() {int a 0;while …

以太坊交易手续费计算

Gas 中译是&#xff1a;瓦斯、汽油&#xff0c;代表一种可燃气体。 这形象地比喻以太坊的交易手续费计算模式&#xff0c;不同于比特币中直接支付比特币作为转账手续费&#xff0c; 以太坊视为一个去中心化的计算网络&#xff0c;当你发送Token、执行合约、转移以太币或者在此区…

东巴古籍——纳西族古老文字的见证

关注我们 - 数字罗塞塔计划 - 华夏大地上的每个民族都有各自独特的文化传承&#xff0c;在前面的文章中&#xff0c;我们已经介绍过中国档案文献遗产名录中收录的永州女书和水族水书&#xff08;详细参见《永州女书——世上唯一专属于女性的文字》、《水书——破解象形文字含义…

二叉树LeetCode热题

94.二叉树的中序遍历 题目 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 输入&#xff1a;root [1,null,2,3]输出&#xff1a;[1,3,2] 代码 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* …

一文搞懂大模型在多GPU环境的分布式训练!

随着大模型时代的到来&#xff0c;模型参数量、训练数据量、计算量等各方面急剧增长。大模型训练面临新的挑战&#xff1a; 显存挑战&#xff1a;例如&#xff0c;175B的GPT-3模型需要175B*4bytes即700GB模型参数空间&#xff0c;而常见的GPU显存如A100是80G显存&#xff0c;这…

zabbix使用脚本自定义监控项

1. 在zabbix_agent的配置文件中配置自定义key和脚本位置 vim /etc/zabbix/zabbix_agentd.confUserParametermq_check_log,/etc/zabbix/zabbix_agentd.d/mqlog.shmq_check_log&#xff1a;是这个自定义参数的名称。在Zabbix的监控项&#xff08;item&#xff09;配置中&#xf…

WinForm中使用Graphics画元素

前言 有时候我们需要在一个图像上显示一些文字&#xff0c;或者画一些标志&#xff0c;这就想我们平时截图也需要做一些描述信息。在C#中我们可以Graphics这个对象来绘制自己所需要描述的信息&#xff0c;当然在WPF中的它的设计思路又不一样了&#xff0c;在WPf中考虑使用的矩…

upload-labs靶场:1—10通关教程

目录 Pass-01&#xff08;JS 验证&#xff09; Pass-02&#xff08;MIME&#xff09; Pass-03&#xff08;黑名单绕过&#xff09; Pass-04&#xff08;.htaccess 绕过&#xff09; Pass-05&#xff08;大小写绕过&#xff09; Pass-06&#xff08;空格绕过&#xff09; …

经典神经网络(15)GLM模型原理详解及其微调(文本摘要)

经典神经网络(15)GLM模型原理详解及其微调(文本摘要) 2024年01月16日&#xff0c;智谱推出新一代基座大模型 GLM-4。新一代基座大模型 GLM-4 的整体性能相比上一代大幅提升&#xff0c;十余项指标逼近或达到 GPT-4&#xff1b;支持更长上下文&#xff1b;更强的多模态&#xf…

马丁短链02异常码 异常拦截器

全局统一返回实体&#xff1a; 目的是除了数据信息&#xff0c;还要带上一些错误状态码&#xff0c;成功与否&#xff0c;错误信息等等以帮助更好理解可能的错误。 规约&#xff1a;默认的约定 异常码设计原则&#xff1a; A客户端异常 B服务端异常 C远程调用异常 具体异常码…

CentOS7.9 利用 KubeKey 扩容 Kubernetes v1.26 Worker 节点实战

转载&#xff1a;CentOS7.9 利用 KubeKey 扩容 Kubernetes v1.26 Worker 节点实战 知识点 定级&#xff1a;入门级 KubeKey 安装部署 KubeSphere 和 Kubernetes KubeKey 定制化部署集群 KubeSphere v3.4.0 功能概览 Kubernetes 基本操作 CentOS 系统内核升级 演示服务器配…

Spring源码- context:component-scan base-package标签的作用源码解析

1.扫描包路径下所有的类加载解析成bean定义信息 ClassPathBeanDefinitionScanner .doScan方法调用路径 doScan:276, ClassPathBeanDefinitionScanner (org.springframework.context.annotation) parse:95, ComponentScanBeanDefinitionParser (org.springframework.context.a…

【用C语言编写】题目名称:数9的个数题目内容:编写程序数一下1到100的所有整数中出现多少个数字9

题目名称&#xff1a;数9的个数 题目内容&#xff1a;编写程序数一下1到100的所有整数中出现多少个数字9 代码如下&#xff1a; #include <stdio.h> int main() {int i 0;int count 0;for (i 1; i <100; i){if (i % 10 9) //个位为9的count;else if (i / 10 9) //…

手机应用的时间可以修改吗??

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

Java线程安全之同步方法

同步方法 使用synchronized修饰的方法&#xff0c;就叫做同步方法&#xff0c;其固定格式如下&#xff1a; public [static] synchronized 返回值类型 同步方法() {可能会产生线程安全问题的代码 }注意事项&#xff1a; 同步方法可以是普通成员方法&#xff0c;也可以是sta…

聊一聊 webpack5性能优化有哪些?

介绍 此文章基于webpack5来阐述 webpack性能优化较多&#xff0c;可以对其进行分类 优化打包速度&#xff0c;开发或者构建时优化打包速度&#xff08;比如exclude、catch等&#xff09;优化打包后的结果&#xff0c;上线时的优化&#xff08;比如分包处理、减小包体积、CDN…