系统调用,库函数以及Linux下与进程相关的指令操作

news/2024/5/16 12:02:32/文章来源:https://blog.csdn.net/qq_56628506/article/details/127165048

文章目录

      • 操作系统怎么为我们提供服务
      • 什么是系统调用
      • 库函数和系统调用
      • Linux系统下操作进程的相关指令
      • fork系统调用

操作系统怎么为我们提供服务

我们知道,操作系统是管理的软件。那么有的时候,用户需要服务,那么对应的操作系统就要提供对应的服务来给用户。但是,由于各种各样的因素。操作系统不相信任何人,也就是说,操作系统为了保护自身。会将其内部的实现细节封装。防止用户有意或者无意的操作破坏内部结构,同时操作系统还需要对外提供服务的方式给用户。 而操作系统提供给用户服务就是通过系统调用 来提供的。
而对于操作系统提供系统调用的方式有很多种。在window下是通过各种图形化界面,而在Linux下就是各种指令。那么我们接下来就来详谈一下这个系统调用。

什么是系统调用

前面我们知道,系统调用是操作系统为我们提供服务。那么系统调用究竟是什么呢? 以Linux操作系统为例,我们知道,Linux内核是使用C语言写的,也就意味这无论是操作系统内部的实现细节,还是操作系统提供给用户的接口。都是C语言的函数! 换言之,所谓的系统调用接口,本质就是操作系统给我们提供的C语言函数接口。那么这时候就有一个问题了,windows和Linux的系统调用会一样吗? 答案显然是不同的,具体的系统调用因系统内部实现的细节而定!不过window和Linux系统的系统调用本质上都是C语言函数

库函数和系统调用

接下来我们回到C语言,我们知道C语言有一个函数printf,这个函数负责向显示器打印我们所需要的数据。那么这里就有一个问题,C语言的库函数本身可以操作硬件吗? 答案显然是否定的!但是printf确实打印出了数据! 我们知道,能够向硬件发出决策指令的必然是操作系统。既然是操作系统为我们向显示器打印了数据。那么必然是通过了系统调用的方式,换言之,printf函数的实现细节必然是调用了对应向显示器打印数据的系统调用! 那么我们就可以得出一个结论:

库函数!=系统调用。有的库函数可能封装了系统调用。但是也有的库函数没有封装系统调用。

下面这张图可以很好帮助理解整个计算机工作的层次结构:
在这里插入图片描述

Linux系统下操作进程的相关指令

在正式介绍使用我们Linux的系统调用之前,我们先来使用以下有关进程的操作指令:

ps ajx —>显示系统里的所有进程的信息
而如果需要显示特定的进程信息,配合grep使用

如查看操作系统内核的进程的指令:

ps ajx | grep systemd

在这里插入图片描述
而由于grep自身也是一个进程,所以如果我们只想要systemd进程的信息,我们可以这样写:

ps ajx | grep systemd | grep -v grep

在这里插入图片描述
这就是我们在Linux下查看进程的命令,有了这个铺垫以后
我们正式介绍第一个Linux下的系统调用—>fork

fork系统调用

在使用这个系统调用之前,我们先来看看fork的说明:
在这里插入图片描述
在这里插入图片描述

这里说明,fork是一个创建子进程的系统调用,如果创建成功,给父进程返回子进程的id,如果是子进程就返回0,如果创建失败就返回-1
下面我们就来用一下这个系统调用:

/**使用fork系统调用** */
#include<stdio.h>
#include<unistd.h>
int main()
{pid_t id=fork();if(id==0){//说明是子进程while(1){printf("我是子进程,打印id=%d\n",id);sleep(1);}}else {//父进程while(1){printf("我是父进程,打印id=%d\n",id);sleep(1);}return 0;}
}

在这里插入图片描述
而这个id是Linux下区分进程的标识.就如同学生在校的学号一样!


以上就是本篇文章的主要内容,如有不足之处希望指出.

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

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

相关文章

实验5 开源控制器实践——POX

实验5 开源控制器实践——POX 基础实验hub分析: 由于在hub模式下,采取广播帧的模式,交换机每收到一帧,会向所有端口进行广播,因而h1发给h2的数据包在h3的端口也能监听到switch分析: 由于在自学习模式下,交换机会根据mac高速缓存信息进行发送数据包,因而在实验过程中,对…

设计模式解析---------------单例模式

单例模式定义 确保某一个类只有一个实例&#xff0c;而且自行实例化并向整个系统提供这个实例。 单例模式的使用场景 确保某个类只有一个对象的场景&#xff0c;避免产生多个对象消耗过多的资源&#xff0c;或者某种对象有且只能有一个。 单例模式的UML图 角色介绍&#xff1…

数字媒体概论——系统篇

一&#xff1a;需求分析 需求分析三大要素&#xff1a; 表达内容 -> 媒体种类面向人群 -> 交互方式使用方式 -> 硬件需求 例如&#xff1a;海洋馆需要一个可以展示海洋生物知识的媒体交互系统&#xff0c;可供多人同时观赏&#xff0c;主要面向儿童&#xff0c;这里…

计算机二级C语言题库(44套真题+刷题软件)第一套

刷题软件 gongzhonghao&#xff1a;露露IT 1、循环队列的存储空间为Q(1:100),初始状态为frontrear100。经过一系列正常的入队与退队操作后,frontrear99,则循环队列中的元素个数为( )。 A. 0或100 B. 1 C. 2 D. 99 本题考查知识点是循环队列。当队头和队尾指针指向同一个元素…

常见的图片格式介绍

常见的图片格式介绍 图片&#xff08;Picture&#xff09;包括图形、图像。图形&#xff08;Graph&#xff09;是矢量图&#xff08;Vector Drawn&#xff09;&#xff0c;图像&#xff08;Image&#xff09;是位图&#xff08;Bitmap&#xff09;。 图片&#xff08;Picture…

【老板要我啥都会】|前端升全栈之项目使用express重构项目(下篇)

前言 承接上一篇文章&#xff0c;《前端升全栈之项目使用express重构项目&#xff08;上篇&#xff09;》&#xff0c;我们继续讲解下一篇的项目使用express重构项目完整的下一篇&#xff08;主要是国庆&#xff0c;需要放松&#xff0c;所以该文章分为上下篇&#xff0c;请大…

2022年Webpack 5初学者完整指南

2022年Webpack 5初学者完整指南 从基础到高级学习 Webpack 5&#xff01;将 Webpack 与 JS、CSS、NPM、模块联合和微前端一起使用 课程英文名&#xff1a;Webpack 5 in 2022 The Complete Guide For Beginners 此视频教程共2.5小时&#xff0c;中英双语字幕&#xff0c;画质…

都这麽大了还不快了解防病毒网关?

目录 一、思考 二、实验 1、实验拓扑 2、配置过程&#xff08;网页端配置&#xff09; 三、总结 1. 什么是恶意软件&#xff1f; 2. 恶意软件有哪些特征&#xff1f; 3. 恶意软件的可分为那几类&#xff1f; 4. 恶意软件的免杀技术有哪些&#xff1f; 5. 反病毒技术…

OceanBase 从0到1数据库内核实战教程学习笔记 - 3.OceanBase基础架构和开发技巧

这篇文章主要介绍王泽林老师分享的 《OceanBase 的基础架构和开发技巧》。如果您看过第一篇文章的对应视频&#xff0c;会发现整个系列主要分为 MiniOB 和 OceanBase 两个系列&#xff0c;本篇文章就是 OceanBase 系列的开篇&#xff0c;所以文章中会有很多 OceanBase 的概念和…

Java类的成员方法的创建以及调用|在使用时有何意义|附运行方式及题目

&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d; &#x1f947;博主昵称&#xff1a;Jovy. &#x1f35f;博客主页…

遥感航拍影像25篇CVPR39个数据集

摘要 本文讲解了39个数据集&#xff0c;关于高空卫星图和低空无人机航拍图像。 本文汇总了25篇CVPR2020年和2021年的论文。 本文详细介绍了这25篇论文的任务是什么&#xff0c;难点是什么&#xff0c;场景是什么。 同时&#xff0c;本文在需要的地方解释了一些卫星图和航拍…

Vue学习第35天——模拟项目上线基本流程

一、打包 将.vue文件生成为.html、.css、.js文件 npm run build执行完之后&#xff0c;会在项目中生成一个dist文件&#xff08;执行的速度取决于项目的大小以及电脑的配置&#xff09; 二、创建服务器 没有后端服务器&#xff0c;这里我们使用node.js express 搭建一个服…

(附源码)计算机毕业设计ssm餐厅管理系统

毕设帮助&#xff0c;指导&#xff0c;本源码分享&#xff0c;调试部署(见文末) 4.1.2系统的主要的功能结构 餐厅管理系统的主要功能的结构如图4-1所示。 图4-1系统功能结构图 4.2系统设计 4.2.1数据表E-R图 菜谱信息属性图如图4-2所示。 图4-2菜谱信息实体属性图 账单信息…

3、数据类型中的数据位置,stograge、memory、calldata

数据位置 所有的复杂类型,即 数组 和 结构 类型,都有一个额外属性,“数据位置”,说明数据是保存在 内存memory 中还是 存储storage 中。 根据上下文不同,大多数时候数据有默认的位置,但也可以通过在类型名后增加关键字 storage 或 memory 进行修改。 函数参数(包括返回的…

Day11 栈和队列

150. 逆波兰表达式求值 解法一&#xff1a;将计算部分抽象成一个函数&#xff0c;使代码更加简洁&#xff0c;避免了很多冗余操作。对比下面解法二&#xff08;我自己写的&#xff09;&#xff0c;此解法&#xff08;参考别人的&#xff09;的代码更加精简。核心思想都是利用栈…

Linux学习 -- Shell面试题练习

1、使用Linux命令查询file1中空行所在的行号 awk /^$/ {print NR} file1 // 使用正则表达式^$ 来表示空行 2、使用Linux命令计算文件a.txt的第二列的和并输出 张三 40 李四 50 王五20 cat a.txt | awk -F " " {sum$2} END {print sum} 3、Shell脚本中如何检查一个文…

欧拉函数的power

在算数基本定理中有 $ N = p_{1}^{a1} p_{2}^{a2} p_{3}^{a3} ..... p_{k}^{ak} $ wuw在y总的课中是用了容斥原理进行推导得到了 $ \phi(x) = N * (1 - \frac{1}{p1}) * (1 - \frac{1}{p2}) * .... * ( 1 - \frac{1}{pk}) $ 所以就可以得到依靠该公式得出的欧拉公式的算法 #in…

基本语法

输入输出输入: 输出:字符串: System.out.println("hello world!"); 字符串+数值 System.out.println("a =" + 8);import java.util.Scanner; //Scanner 是一个简单的文本扫描器public class MyInput {public static void main(String[] Args) {Scanne…

cat笔记

0.学习目标 能够知道什么是CAT能够搭建CAT服务端环境能够进行CAT客户端的集成能够使用CAT监控界面进行服务监控能够完成CAT和常用框架集成了解CAT告警配置了解CAT客户端和服务端原理 1.CAT入门 在这一部分我们主要介绍以下3部分内容&#xff1a; 什么是调用链监控 什么是CA…

【虚幻引擎UE】UE5 阴影异常与优化解决方案合集

一、消除阴影锯齿 异常效果&#xff1a; 模型锯齿状阴影。 解决方案&#xff1a; ① 确定打开虚拟阴影贴图。 虚拟阴影贴图&#xff08;VSM&#xff09;是一种全新的阴影贴图方法&#xff0c;可以提供稳定的高分辨率阴影。通过与虚幻引擎5的Nanite虚拟几何体、Lumen全局光照和…