iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >Linux进程的介绍及创建方法
  • 383
分享到

Linux进程的介绍及创建方法

2023-06-06 00:06:44 383人浏览 独家记忆
摘要

这篇文章主要介绍“linux进程的介绍及创建方法”,在日常操作中,相信很多人在Linux进程的介绍及创建方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux进程的介绍及创建方法”的疑惑有所帮助!接下来

这篇文章主要介绍“linux进程的介绍及创建方法”,在日常操作中,相信很多人在Linux进程的介绍及创建方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux进程的介绍及创建方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

进程

首先,我们可以使用$ps命令来查询正在运行的进程,比如$ps -eo pid,comm,cmd,下图为执行结果:

(-e表示列出全部进程,-o pid,comm,cmd表示我们需要PID,COMMAND,CMD信息)

Linux进程的介绍及创建方法

每一行代表了一个进程。每一行又分为三列。第一列PID(process IDentity)是一个整数,每一个进程都有一个唯一的PID来代表自己的身份,进程也可以根据PID来识别其他的进程。第二列COMMAND是这个进程的简称。第三列CMD是进程所对应的程序以及运行时所带的参数。

(第三列有一些由中括号[]括起来的。它们是内核的一部分功能,被打扮成进程的样子以方便操作系统管理。我们不必考虑它们。)

我们看第一行,PID为1,名字为init。这个进程是执行/bin/init这一文件(程序)生成的。当Linux启动的时候,init是系统创建的第一个进程,这一进程会一直存在,直到我们关闭计算机。这一进程有特殊的重要性,我们会不断提到它。

如何创建一个进程

实际上,当计算机开机的时候,内核(kernel)只建立了一个init进程。Linux内核并不提供直接建立新进程的系统调用。剩下的所有进程都是init进程通过fork机制建立的。新的进程要通过老的进程复制自身得到,这就是fork。fork是一个系统调用。进程存活于内存中。每个进程都在内存中分配有属于自己的一片空间 (address space)。当进程fork的时候,Linux在内存中开辟出一片新的内存空间给新的进程,并将老的进程空间中的内容复制到新的空间中,此后两个进程同时运行。

老进程成为新进程的父进程(parent process),而相应的,新进程就是老的进程的子进程(child process)。一个进程除了有一个PID之外,还会有一个PPID(parent PID)来存储的父进程PID。如果我们循着PPID不断向上追溯的话,总会发现其源头是init进程。所以说,所有的进程也构成一个以init为根的树状结构。

如下,我们查询当前shell下的进程:

 class="">root@vamei:~# ps -o pid,ppid,cmd PID  PPID CMD16935  3101 sudo -i16939 16935 -bash33774 16939 ps -o pid,ppid,cmd

我们可以看到,第二个进程bash是第一个进程sudo的子进程,而第三个进程ps是第二个进程的子进程。

还可以用$pstree命令来显示整个进程树:

 class="">init─┬─NetworkManager─┬─dhclient    │                └─2*[{NetworkManager}]    ├─accounts-daemon───{accounts-daemon}    ├─acpid    ├─apache2─┬─apache2    │         └─2*[apache2───26*[{apache2}]]    ├─at-spi-bus-laun───2*[{at-spi-bus-laun}]    ├─atd    ├─avahi-daemon───avahi-daemon    ├─bluetoothd    ├─colord───2*[{colord}]    ├─console-kit-dae───64*[{console-kit-dae}]    ├─cron    ├─cupsd───2*[dbus]    ├─2*[dbus-daemon]    ├─dbus-launch    ├─dconf-service───2*[{dconf-service}]    ├─dropbox───15*[{dropbox}]    ├─firefox───27*[{firefox}]    ├─GConfd-2    ├─geoclue-master    ├─6*[getty]    ├─gnome-keyring-d───7*[{gnome-keyring-d}]    ├─gnome-terminal─┬─bash    │                ├─bash───pstree    │                ├─gnome-pty-helpe    │                ├─sh───R───{R}    │                └─3*[{gnome-terminal}]

fork通常作为一个函数被调用。这个函数会有两次返回,将子进程的PID返回给父进程,0返回给子进程。实际上,子进程总可以查询自己的PPID来知道自己的父进程是谁,这样,一对父进程和子进程就可以随时查询对方。

通常在调用fork函数之后,程序会设计一个if选择结构。当PID等于0时,说明该进程为子进程,那么让它执行某些指令,比如说使用exec库函数(library function)读取另一个程序文件,并在当前的进程空间执行 (这实际上是我们使用fork的一大目的: 为某一程序创建进程);而当PID为一个正整数时,说明为父进程,则执行另外一些指令。由此,就可以在子进程建立之后,让它执行与父进程不同的功能。

子进程的终结(termination)

当子进程终结时,它会通知父进程,并清空自己所占据的内存,并在内核里留下自己的退出信息(exit code,如果顺利运行,为0;如果有错误或异常状况,为>0的整数)。在这个信息里,会解释该进程为什么退出。父进程在得知子进程终结时,有责任对该子进程使用wait系统调用。这个wait函数能从内核中取出子进程的退出信息,并清空该信息在内核中所占据的空间。但是,如果父进程早于子进程终结,子进程就会成为一个孤儿(orphand)进程。孤儿进程会被过继给init进程,init进程也就成了该进程的父进程。init进程负责该子进程终结时调用wait函数。

当然,一个糟糕的程序也完全可能造成子进程的退出信息滞留在内核中的状况(父进程不对子进程调用wait函数),这样的情况下,子进程成为僵尸(zombie)进程。当大量僵尸进程积累时,内存空间会被挤占。

进程与线程(thread)

尽管在UNIX中,进程与线程是有联系但不同的两个东西,但在Linux中,线程只是一种特殊的进程。多个线程之间可以共享内存空间和IO接口。所以,进程是Linux程序的唯一的实现方式。

到此,关于“Linux进程的介绍及创建方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Linux进程的介绍及创建方法

本文链接: https://www.lsjlt.com/news/245435.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Linux进程的介绍及创建方法
    这篇文章主要介绍“Linux进程的介绍及创建方法”,在日常操作中,相信很多人在Linux进程的介绍及创建方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux进程的介绍及创建方法”的疑惑有所帮助!接下来...
    99+
    2023-06-06
  • C++进程的创建和进程ID标识详细介绍
    目录进程的ID进程创建进程的ID 进程的ID,可称为PID。它是进程的唯一标识,类似于我们的身份证号是唯一标识,因为名字可能会和其他人相同,生日可能会与其他人相同…&h...
    99+
    2024-04-02
  • python之操作系统介绍,进程的创建
    操作系统(英语:operating system,缩写作 OS)是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系...
    99+
    2023-01-30
    进程 操作系统 python
  • Linux进程创建的方法是什么
    Linux进程的创建可以通过调用fork()系统调用来实现。fork()系统调用会创建一个与父进程几乎完全相同的子进程,包括代码段、...
    99+
    2024-04-02
  • C#操作进程的方法介绍
    进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行...
    99+
    2024-04-02
  • Linux下创建进程的三种方式及特点
    一、fork()函数 fork()函数是Linux最常见的创建进程的方式,在调用fork()函数后,系统会为新进程分配资源,例如内存空间,然后复制父进程的全部资源到子进程中,因此新进程和父进程几乎完全一样。此函数的特点是子进程是父进程...
    99+
    2023-10-29
    三种 进程 方式
  • JavaScript创建对象的方法以及各种模式的实例介绍
    这篇文章主要介绍“JavaScript创建对象的方法以及各种模式的实例介绍”,在日常操作中,相信很多人在JavaScript创建对象的方法以及各种模式的实例介绍问题上存在疑惑,小编查阅了各式资料,整理出简单...
    99+
    2024-04-02
  • 详细介绍windows系统下创建进程、线程的过程
    进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。程序只是一组指令的有序集合,它本身没有任何运行的含义,只是一个静态实体。而进程则不同,它是程序在某个...
    99+
    2023-06-02
    windows 创建进程 线程 过程 系统 进程
  • Kubernetes服务的介绍以及如何创建
    Kubernetes服务的介绍以及如何创建,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前言上文介绍了Kubernetes副本机制,正是因为副本机制你的部署能自动保待运行,并且...
    99+
    2023-06-19
  • git中怎么创建仓库?方法介绍
    Git是目前最为流行的版本控制工具之一,为开发者们提供了快速便捷的代码管理方式。在现今的开发环境中,使用Git进行版本控制已经成为了一个基本要求。那么,在开发过程中如何创建Git仓库呢?本篇文章将给你详细介绍Git仓库的创建方法。在Gith...
    99+
    2023-10-22
  • MySQL创建、删除以及更改用户的方法与权限介绍
    本篇内容介绍了“MySQL创建、删除以及更改用户的方法与权限介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所...
    99+
    2024-04-02
  • Linux进程间的关系介绍
    这篇文章主要讲解了“Linux进程间的关系介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux进程间的关系介绍”吧!Linux的进程相互之间有一定的关系。比如说,在Linux进程基础...
    99+
    2023-06-13
  • 卸载linux的方法介绍
    这篇文章主要讲解了“卸载linux的方法介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“卸载linux的方法介绍”吧!很多新童鞋都不知道怎么卸载linux,往往搞损坏grub,导致不能正常...
    99+
    2023-06-12
  • Linux下Ldd命令介绍及使用方法
    本篇内容主要讲解“Linux下Ldd命令介绍及使用方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux下Ldd命令介绍及使用方法”吧!Linux Ldd参数说明:--version  打...
    99+
    2023-06-13
  • Pandas的介绍及安装方法
    这篇文章主要介绍“Pandas的介绍及安装方法”,在日常操作中,相信很多人在Pandas的介绍及安装方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Pandas的介绍及安装方法”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-01
  • oracle创建用户及常用命令介绍
    这篇文章主要讲解了“oracle创建用户及常用命令介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“oracle创建用户及常用命令介绍”吧! --...
    99+
    2024-04-02
  • Linux系统编程之进程介绍
    我们平时写的 C 语言代码,通过编译器编译,最终它会成为一个可执行程序,当这个可执行程序运行起来后(没有结束之前),它就成为了一个进程。一、进程概述...
    99+
    2023-06-05
  • Win8.1系统中图片密码创建方法介绍
    用过Windows 8和Windows 8.1的朋友应该都知道图片密码,图片密码确实很方便,登陆系统,不用再敲一串数字+字母组成的登录口令了。 下面介绍下图片密码的创建方法: 1. 按快捷键【Win+I】,打开【设置】然...
    99+
    2023-06-06
    Win8.1 图片密码 创建 密码 图片 系统
  • windows7进到bios方法介绍
    windows7进到bios方法是什么呢,由于大部分用户一般不会主动进到bios界面,因此用户不清楚如何进入bios,bios界面是启动电脑的时候相当于系统发的后台,能够控制一些硬件的启动等作用,因而用户要想进到bios的话必须一个进到的方...
    99+
    2023-07-11
  • git版本库介绍及本地创建的三种场景方式
    目录1、Git版本库介绍2、创建本地版本库场景一:创建一个空的本地版本库。场景二:项目中已存在文件时,创建该项目的本地版本库。场景三:在GitHub网站上创建仓库,克隆到本地。1、G...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作