首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux进程信号()

,如果没有立马处理这个信号,需要进程具有记录信号的能力 ---- 信号的产生对于进程来讲是异步的 异步为两者互相做自己的事,互不干扰 如:你正在上课,外卖小哥给你打电话告诉你快递到了,因为快递有重要的东西...在键盘中输入 CTRL C ,终止运行程序,本质也是向对前台进程发送信号 ---- Linux通过远程终端访问时,只允许一个进程处于前台,默认情况是bash, 所以在自己的程序运行时输入指令没有任何反应...\ 代表3号信号 ,此时虽然2号信号被置为自定义动作了,但是三号信号还没有,所以依旧能终止进程 ---- 修改mysignal.cc文件内容,加入对于3号信号的自定义动作 ---- 再次运行可执行程序时...---- 修改mykill.cc文件内容 计算1S中计算机会将整数累计到多少 ---- 在这次计算中,count只有11万,非常不符合我们的预期 因为要打印到显示器,以及网络问题,非常拖延速度...---- 修改count为全局变量,在发送信号时,自定义方法中输出count值 这时count的值就变成5亿 两者相比之下,说明IO效率非常底下

13620

Linux进程概念()

实际Linux 中定义 task_struct 结构体的时候,首先先定义一个双链表的结构体: struct dlist { struct dlist* next; struct...首先我们先了解一下 fork() 在做什么,fork() 创建子进程,系统中会一个子进程,os 会以父进程为模板,为子进程创建一个 PCB,而父进程会与子进程共享代码和数据,所以 fork() 之后,...因为子进程的 pid 具有唯一性,是为了方便父进程对不同的子进程进行区分管理;而给子进程返回 0 是因为子进程的父进程也是有唯一性,它们都是同一个父进程的,对于进程而言,只需要知道是否成功即可。...假设我们启动一个qq,启动微信,启动浏览器,这些都是进程,终止qq或者微信的进程,浏览器的进程还在吗?答案是肯定在的;如果是对于父子进程来说,父进程被终止,子进程还在吗?或者反过来呢?答案是在的!...每一个进程并不是占有CPU就一直运行,每隔一段时间,会自动被从CPU剥离下来,这段时间称为时间片;但是Linux内核中不仅仅只有时间片,因为只有时间片的话会显得太呆板,假设每个进程都运行1ms就下来,

10010
您找到你想要的搜索结果了吗?
是的
没有找到

Linux进程信号(

那么,进程与人处理信号的方式有什么异同呢?信号又是如何产生的呢?本文我们来了解Linux中的进程信号。...信号的发送和接收,实际就是改变PCB中的信号位图。...2.系统调用 用键盘向前台进程发送信号,前台进程会影响shell,Linux规定跟shell交互时只允许有一个前台进程,实际上当我们运行自己的进程时,我们的进程就变成了前台进程,而sbash会被自动切到后台...但,实际这种方式效率较低,因为打印在屏幕是需要访问外设的,而外设的运行速度较慢。...本文作者目前也是正在学习Linux相关的知识,如果文章中的内容有错误或者不严谨的部分,欢迎大家在评论区指出,也欢迎大家在评论区提问、交流。

15920

Linux进程信号详解【

前台进程在运行过程中用户随时可能按下 Ctrl-C 而产生一个信号,也就是说该进程的用户空间代码执行到任何地方都有可能收到 SIGINT 信号而终止,所以信号相对于进程的控制流程来说是 异步(Asynchronous...Linux中存在许多信号,我们可以使用 kill -l 命令查看Linux中有哪些信号:   Linux中,有 62种信号,前31种(1~31)信号被称为 标准信号,每个信号都有特殊的含义及用途。...当然,这么的信号并不需要你全部记下来,我们在运用的过程中就会知道哪些信号常用,哪些不常用。 ✈️信号的处理方式   信号的 常见处理方式 有以下几种: 忽略此信号。 执行该信号的默认处理动作。...这么看来操作系统只需要解释我们输入的信息即可,但是对于OS来说,用户输入的动作一定是异步的。而我们在日常使用键盘的时候,操作系统似乎是优先处理的。这样对于操作系统的压力是不是有些大了?...计算错误:   除零错误,实际也就是计算错误,在硬件方面,计算错误表现在CPU的寄存器,我们知道,程序的计算都是在寄存器内完成的,寄存器可以存贮少量数据,而当计算发生错误,CPU停止对进程的操作

7910

Linux 进程间通信 : 共享内存(

在这主要介绍的就是用mmap进行多进程的内存共享功能。Linux产生子进程的系统调用是fork,根据fork的语义以及其实现,我们知道新产生的进程在内存地址空间跟父进程是完全一致的。...实际对于XSI的共享内存,其key的作用就类似文件的文件名,shmget返回的int类型的shmid就类似文件描述符,注意只是“类似”,而并非是同样的实现。...对于一个XSI的共享内存,其key是系统全局唯一的,这就方便其他进程使用同样的key,打开同样一段共享内存,以便进行进程间通信。...对于刚接触共享内存的程序员来说这可能需要适应一下。实际共享内存的生存周期根文件更像:进程对文件描述符执行close并不能删除文件,而只是关闭了本进程对文件的操作接口,这就像shmdt的作用。...对于Linux系统来说,使用XSI共享内存的时候可以通过shmget系统调用的shmflg参数来申请大页内存(huge pages),当然这样做将使进程的平台移植性变差。

11.1K33

Fkill –在Linux搜索并终止进程

通常,我使用“ top”命令或“ ps -ef | grep ”或“ pidof ”来查找进程ID,并使用命令“ kill -9 ”将其kill掉。...后来我发现,Fkill程序可以找到正在运行的进程,并可根据需要杀死一个或多个进程。它使用Nodejs编写,并且支持Linux、Mac OS和Microsoft Windows。...安装Fkill Fkill在AUR中可用,因此您可以在Arch Linux及其变体使用任何AUR帮助器进行安装,例如Yay。...$ yay -S fkill 在其他Linux发行版,请确保按照以下链接中的说明安装了Nodejs。 如何在Linux安装NodeJS 安装Nodejs后,运行以下命令以安装fkill。...$ npm install --global fkill-cli 在Linux使用Fkill交互式搜索并杀死多个进程 要搜索并终止进程,只需运行: $ fkill 此命令将启动交互式UI,您可以在其中找到正在运行的进程列表及其端口号

2.3K10

linux 操作系统的进程调度() -- 进程调度算法的演进

引言 一篇文章中,我们介绍了内核调度的基本概念,知道了调度器设计中最核心的两个指标 -- 周转时间与响应时间: linux 操作系统的进程调度() -- 进程调度的基本概念 本文,我们就继续顺着上文的思路...SJF 算法的理想虽然很美好,但在实际系统执行过程中,却往往存在着两个致命的问题: 在进程执行过程中,新的任务随时都有可能到来,如果任务不是同时到来的,那么 SJF 算法事实就退化成了 FCFS 算法...多级反馈队列 MLFQ 针对 RR 算法存在的问题,结合我们一篇文章中介绍的 IO 密集型与 CPU 密集型进程的区别: IO 密集型:频繁 IO,但占用 CPU 的时间不多; CPU 密集型:进程执行过程中很少执行...从这三条原则,我们看出,操作系统必须在运行过程中区分一个进程究竟是 IO 密集型还是 CPU 密集型,并且在正确区分它们的基础,需要增加优先级概念,从而让 IO 密集型进程更为优先和频繁地被分配到 CPU...结语 正是有了多级反馈队列算法,现代生产级操作系统中的进程调度器才得以真正建立起来。 下一篇文章,我们就来深入 linux,来了解具体的 linux 进程调度器的发展历史和实现机制,敬请期待。

1.7K10

Linux 使用 jps 命令检查 Java 进程

image.png 系统运行着诸多进程,通过 jps 命令能够快速有效识别 Java 进程。 在 Linux 中,有一些用于查看系统运行进程的命令。进程是指由内核管理的正在进行的事件。...每启动一个应用程序时,就会产生一个进程,但也有许多在计算机后台运行的进程,如保持系统时间准确的进程、监听新文件系统的进程、索引化文件的进程等。...在 Linux 中,可以通过 ps 命令查看进程。这是查看当前系统运行进程最简单的方法。...CMD   4486 pts/0    00:00:00 bash  66930 pts/0    00:00:00 ps 你也可以通过 ps 命令,并配合结果输出管道符进行 grep,从而查看系统运行的...Java 虚拟机进程状态Java Virtual Machine Process Status(jps)工具可以帮你扫描系统所有运行的 Java 虚拟机(JVM)实例。

2.7K20

Linux 使用Systemd 来进程守护Net应用

Linux 使用Systemd 来进程守护Net应用 Systemd Service 的方式,用于在 Linux 系统管理和运行服务。...几乎所有主流的 Linux 操作系统都使用 Systemd 作为默认的系统和服务管理器,因此在这些系统,您都可以使用相同的方式来管理和运行服务。...除了 Ubuntu,其他常见的 Linux 发行版,如 Debian、CentOS、Fedora、Red Hat Enterprise Linux 等都支持 Systemd。...进程守护步骤 创建一个 .service 文件在 /etc/systemd/system/ 目录下创建一个名为 myapp.service 的文件,使用文本编辑器打开并添加以下内容: [Unit] Description...-开始 sudo systemctl status miniapi.service --停止 sudo systemctl stop miniapi.service --禁用 [此命令将停止应用程序的进程并停止服务

78520

linux内核学习(三)之init进程学习(

上次讲解到linux内核启动分析的前期准备,还没有去分析linux内核具体启动分析过程,这里我换一种方式来分享,在linux启动后,linux系统接下来会如何进行工作?...一、init进程完成了从内核态向用户态的转变: 1、一个进程2种状态: 这里所说的一个进程两种状态,说的是进程状态的转换;首先在介绍这种状态的转换之前,我们来了解一下什么是init进程,它其实是linux...系统在启动后运行的第一个进程(这里关于进程的学习,可以去看我之前分享的linux应用编程专辑,有很详细的介绍);而init进程刚开始运行的时候是内核态,它属于一个内核线程,然后他自己运行了一个用户态下面的程序后把自己强行转成了用户态...打个不恰当的比喻,比如大家都知道的建房子,在这之前,你必须打好地基,打好了地基之后,你才能开始动工在地基砌砖头了,也就是各种操作了。 3、用户态下做了什么?...windows任务管理器里面就可以看到如下图所示: 在我们linux系统里面的话,在init进程转换为用户状态下后,后面有一些我们比较熟悉的进程操作:login进程、命令行进程、shell进程(shell

1.5K20

深入理解Linux内核之进程睡眠(

1开场白 环境: 处理器架构:arm64 内核源码:linux-5.10.50 ubuntu版本:20.04.1 代码阅读工具:vim+ctags+cscope 无论是任务处于用户态还是内核态,经常会因为等待某些事件而睡眠...睡眠对于任务来说究竟意味着什么?内核是如何管理睡眠的任务的?我们会结合内核源代码来分析任务的睡眠,力求全方位角度来剖析。...注:由于篇幅问题,文章分为上下两篇,且这里不区分进程和任务,统一使用任务来表示进程。 主要讲解以下内容: 睡眠的三种状态 睡眠的内核原理 用户态睡眠 内核态睡眠 总结 2....注:睡眠状态描述见一小节! 3.2 记录睡眠的任务 这一步也非常有必要,内核会将即将睡眠的任务记录下来,要么加入到链表中管理,要么使用数据结构记录。...2.即将睡眠的任务是cpu的当前任务(curr指向)。3.调用主调度器后,即将睡眠的任务不会再次加入cpu运行队列,除非被唤醒。

1.4K20

Linux 使用 jps 命令检查 Java 进程

Linux 中,有一些用于查看系统运行进程的命令。进程是指由内核管理的正在进行的事件。...每启动一个应用程序时,就会产生一个进程,但也有许多在计算机后台运行的进程,如保持系统时间准确的进程、监听新文件系统的进程、索引化文件的进程等。...在 Linux 中,可以通过 ps 命令查看进程。这是查看当前系统运行进程最简单的方法。...CMD 4486 pts/0 00:00:00 bash 66930 pts/0 00:00:00 ps 你也可以通过 ps 命令,并配合结果输出管道符进行 grep,从而查看系统运行的...Java 虚拟机进程状态(Java Virtual Machine Process Status)(jps)工具可以帮你扫描系统所有运行的 Java 虚拟机(JVM)实例。

2.3K30

Linux进程——Linux进程进程优先级

如果对前面Linux进程不太熟悉可以先阅读: Linux进程 本篇主要内容: 僵尸进程和孤儿进程 Linux进程优先级 1. 僵尸进程 僵尸进程就是处于僵尸状态下的进程!...1号进程实际就是操作系统 3. 进程优先级 3.1 基本概念 基本概念: cpu资源分配的先后顺序,就是指进程的优先权(priority)。 优先权高的进程有优先执行权利。...容易导致优先级较低的进程,长时间得不到CPU资源 --进程饥饿 因此:每一个进程不是占有CPU就一直运行,每隔一段时间,自动被从CPU剥离下来 Linux 内核支持进程之间进行cpu资源抢占的,基于时间片的轮转式抢占式内核...多个进程高频来回的进行切换,逻辑就是一个CPU划分成了多个CPU只不过性能也会被“分走”,这就是并发 并发要研究的是进程间切换,我们下一节再来详谈 4....总结 本篇文章前部分紧贴上篇Linux进程,分析完了Linux下常见的进程状态,然后初步了解了Linux进程优先级,而进程优先级与前面内容相差较大,希望大家能够多花点时间理解!

6910

Linux| |对于UDP的学习

端口 https服务器,使用443端口 操作系统动态分配的端口号 客户端服务器的端口号,这个范围的端口号操作系统可以对其进行分配 查看端口号 less /etc/services //就可以查看Linux...,也就是进程和端口号是一对的关系 当我们写一个程序使用端口号的时候,要避开这些知名端口号 【问题】 1.一个进程是否可以bind多个端口号呢?...,从而完成计算机之间的通信 计算机之间的通信: 主机A的某个进程与主机B的另一个进程进行通信 网络字节序转换 对于数据在网络中传输的时候有着自己遵循的传输规则大端传输 对于主机上的数据的传输序列有着两种...: 大端:即高位字节序放在低地址 小端:即低位字节序放在低地址 传输:均是先传输低地址的数据然后是高地址的数据 所以对于主机上的数据传输的时候传输到网络的时候有可能导致数据错误(例如主机上是小端的时候...实现本地通信 服务器 只需要服务器创建一个套接字 使该套接字对于本地地址(127.0.0.1)进行绑定,并且绑定一个端口号(1024–65535)就行了 绑定本地地址是为了对于本地计算机的两个进程进程通信

3.1K30

LinuxLinux进程控制>进程创建&&进程终止&&进程等待&&进程程序替换

1.进程创建 1.1 fork函数 在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。...else if (ret > 0) { // 异常退出 printf("sig code : %d\n", st & 0X7F); } } } 测试结果: [root@localhost linux.../a.out #等20秒退出 child exit code:10 [root@localhost linux]# ....可以使用环境变量PATH,无需写全路径 execvp("ps", argv); // 带e的,需要自己组装环境变量 execve("/bin/ps", argv, envp); exit(0); } 事实,...Linux鼓励将这种应用于程序之内的模式扩展到程序之间。如下图 一个C程序可以fork/exec另一个程序,并传给它一些参数。这个被调用的程序执行一定的操作,然后通过exit(n)来返回值。

10710

linux 操作系统的进程调度() -- 进程调度的基本概念

,想象一下,你移动了一下鼠标,CPU 由于被 CPU 密集型进程占用着,而让你的鼠标在屏幕一顿一顿地移动,这显然太过于糟糕。...在 Linux 操作系统中,系统会为每个进程打一个分,这个分就是 PR 值,它是 Priority 的前两个字母。...通过 PR 值的范围,linux 换分出了两类进程: 实时进程 -- PR 值在 0 到 99 之间,PR 值越大,优先级越高; 普通进程 -- PR 值在 100 到 139 之间,PR 值越小,优先级越高...对于这些顾客而言,缩短周转时间是他们的核心诉求,但对于超市来说,综合考虑不同顾客对于排队时长的特殊诉求,合理安排所有顾客的排队顺序,才能够降低系统周转时间,拥有良好的用户体验。...结语 本文,我们从操作系统的整体层面,了解了操作系统进程调度的基本概念和设计思想,但我们尚未触及核心部分,到底 linux 系统中的调度器是如何设计的,又有着怎样的历史沿革,出现了哪些算法?

1K10

Linux进程控制——Linux进程等待

前言:接着前面进程终止,话不多说我们进入Linux进程等待的学习,如果你还不了解进程终止建议先了解: Linux进程终止 本篇主要内容: 什么是进程等待 为什么要进行进程等待 如何进程等待...进程等待的概念: 我们通常说的进程等待其实是通过wait/waitpid的方式,让父进程(一般)对子进程进行资源回收的等待过程,父进程必须等待这个子进程结束后,处理它的代码和数据! 2....进程等待必要性: 若子进程退出,而父进程对它不管不顾,就可能造成‘僵尸进程’的问题,进而造成内存泄漏。...父进程创建子进程的目的是为了让子进程协助自己完成任务的,而父进程需要知道子进程将任务完成得如何。这就需要通过进程等待的方式,获取子进程的退出信息。 3....这个就是因为进程具有独立性,父进程无法直接获得子进程的退出信息 总结: 进程等待确实非常有用,它既可以回收僵尸进程,避免造成内存泄漏,也能让父进程能够获取到子进程的退出信息,进程等待我们就先了解这么

7510

Linux| |对于UDP的学习

端口 https服务器,使用443端口 操作系统动态分配的端口号 客户端服务器的端口号,这个范围的端口号操作系统可以对其进行分配 查看端口号 less /etc/services //就可以查看Linux...,也就是进程和端口号是一对的关系 当我们写一个程序使用端口号的时候,要避开这些知名端口号 【问题】 1.一个进程是否可以bind多个端口号呢?...,从而完成计算机之间的通信 计算机之间的通信: 主机A的某个进程与主机B的另一个进程进行通信 # 网络字节序转换 对于数据在网络中传输的时候有着自己遵循的传输规则大端传输 对于主机上的数据的传输序列有着两种...: 大端:即高位字节序放在低地址 小端:即低位字节序放在低地址 传输:均是先传输低地址的数据然后是高地址的数据 所以对于主机上的数据传输的时候传输到网络的时候有可能导致数据错误(例如主机上是小端的时候...ip地址和端口号,这个ip地址和端口号也就是要知道客户端要发送消息给哪一个服务器进行发送 启动服务器 必须要给服务器绑定一个ip地址和端口号,也就是要注意该服务器处于该计算机上的哪一个进程

2.8K20

Linux进程控制——Linux进程终止

前言:前面了解完前面的Linux进程基础概念后,我们算是解决了Linux进程中的一大麻烦,现在我们准备更深入的了解Linux进程——Linux进程控制!...我们主要介绍的Linux进程控制内容包括:进程终止,进程等待与替换,进程程序替换! 本篇主要内容: 重识进程创建 进程退出场景 错误码和退出码 1....重识进程创建 1.1 fork函数 在我们之前提到过,创建进程使用的是fork函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。...因为exit函数在调用exit之前将所有缓存数据都写入了,所以在终止进程时,会将数据打印在屏幕!...exit终止进程的时候,不会自动刷新缓冲区 总结 进程终止相对于其他的进程控制来说,是很好理解的。我们主要介绍了进程终止,在明白错误码和退出码之后,相信能理解父进程是怎么得到子进程信息的。

7810
领券