操作系统练习:在Linux上创建进程,及查看进程状态

这篇具有很好参考价值的文章主要介绍了操作系统练习:在Linux上创建进程,及查看进程状态。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

说明

进程在执行过程中可以创建多个新的进程。创建进程称为“父进程”,新的进程称为“子进程”。每个新的进程可以再创建其他进程,从而形成进程树。

每个进程都有一个唯一的进程标识符(process identifier,pid)。在Linux中,init进程是所有其他进程的根进程。

在Linux中,可以通过系统调用fork()创建新进程,新进程的地址空间复制了原来进程的地址空间。父进程和子进程都会继续执行fork()调用之后的指令。

注:本文是《操作系统概念(第九版)》第三章的练习。

创建进程

创建进程的C语言代码示例

#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>

int main(){
        pid_t pid;

        pid = fork();

        /* Both parent and child process will continue from here */
        printf("current pid: %d \n", getpid());

        if (pid < 0){
                /* error occurred */
                fprintf(stderr, "Fork Failed");
                return 1;
        } else if (pid == 0) {
                /* child process */
                printf("In Child, pid: %d, ppid: %d\n", getpid(), getppid());
                execlp("/bin/ls", "ls", NULL);
        } else {
                /* parent process will wait for the child process to complete */

                /* 如果子进程已经结束了,但是其父进程还没有调用wait(),这个进程就是僵尸进程 */
                sleep(20);

                wait(NULL);
                printf("In parent, pid: %d, ppid: %d\n", getpid(), getppid());
        }

        return 0;
}

操作系统练习:在Linux上创建进程,及查看进程状态,linux,运维,服务器

编译和执行

  • 编译: gcc -o process process.c
  • 执行: ./process
  • 执行结果的输出如下:
current pid: 198495									#父进程执行的,获取到的是父进程的pid
current pid: 198496									#子进程执行的,获取到的是子进程的pid
In Child, pid: 198496, ppid: 198495			 #在子进程的判断语句中,pid为子进程pid,ppid为父进程的pid
process  process.c									 #在子进程的判断语句中,执行execlp("/bin/ls", "ls", NULL);的输出。在此之后的20秒,子进程执行结束,短暂变为僵尸进程
In parent, pid: 198495, ppid: 197721		#在父进程的判断语句中,pid为父进程的pid,ppid为父进程的父进程pid

查看进程

  • ps -ef:列出系统中所有当前活动进程的完整信息
    操作系统练习:在Linux上创建进程,及查看进程状态,linux,运维,服务器

  • ps -l: 可以查看进程状态,状态列位于列S;状态为Z的进程为僵尸进程
    操作系统练习:在Linux上创建进程,及查看进程状态,linux,运维,服务器

  • pstree: 以树形结构展示进程
    操作系统练习:在Linux上创建进程,及查看进程状态,linux,运维,服务器文章来源地址https://www.toymoban.com/news/detail-660103.html

到了这里,关于操作系统练习:在Linux上创建进程,及查看进程状态的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 头歌操作系统 课堂练习3.1:进程的描述与状态 答案

    头歌操作系统 课堂练习3.1:进程的描述与状态 答案

    第1关:任务寄存器(TR)的分析 编程要求 根据相关知识,回答问题: (将答案填写在 /data/workspace/myshixun/第一关.txt 中) 1 号进程的任务状态段(TSS)的地址是多少?1 号进程的核心栈栈底的位置是多少? 1 号进程运行时,任务寄存器(TR)的值是多少?它指向的任务状态段

    2023年04月25日
    浏览(17)
  • 操作系统——MFC实现进程创建和通信2

    操作系统——MFC实现进程创建和通信2

    我接着上篇博客讲,如果没有构建项目的童鞋请移步到操作系统——MFC实现进程创建和通信1 实现进程通信的方法有很多,我们先用一个比较简单的方法实现一下。 window.postMessage() 方法可以安全地实现跨源通信。通常,对于两个不同页面的脚本,只有当执行它们的页面位于具

    2024年02月07日
    浏览(6)
  • Linux操作系统篇:进程

    Linux操作系统篇:进程

    我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系 为什么计算机要采用冯诺依曼体系呢? 在计算机出现之前有很多人都提出过计算机体系结构,但最终选择冯诺依曼是因为用比较少的钱就可以做出效率不错的计算机 截至目前,我们

    2024年03月18日
    浏览(34)
  • 【Linux】操作系统&&进程概念

    【Linux】操作系统&&进程概念

    冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构 。数学家冯·诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成( 运算器、控制器、存储器、输入设备、输出设备 ),这

    2024年01月16日
    浏览(11)
  • Linux--操作系统进程的状态

    Linux--操作系统进程的状态

    【Linux】进程概念 —— 进程状态_linux d状态进程_Hello_World_213的博客-CSDN博客 新建: 字面意思,将你的task_struct创建出来并且还未入队列 运行: task_struct结构体在运行队列中排队,就叫做运行态 阻塞: 等待非CPU资源就绪,阻塞状态   挂起: 当内存不足的时候,OS通过适当的

    2024年02月15日
    浏览(17)
  • 【Linux】操作系统与进程的概念

    【Linux】操作系统与进程的概念

    目录 冯诺依曼体系 注意 为什么CPU不直接访问输入或输出设备? 跨主机间数据的传递 操作系统 管理 进程 描述进程 进程的查看和终止  bash 通过系统调用创建子进程 fork的辨析 🥖冯·诺依曼结构也称普林斯顿结构,是一种 将程序指令存储器和数据存储器合并在一起的存储器

    2024年01月18日
    浏览(10)
  • Linux操作系统——第五章 进程信号

    Linux操作系统——第五章 进程信号

          目录 信号概念 用kill -l命令可以察看系统定义的信号列表 信号处理常见方式概览 产生信号 1. 通过终端按键产生信号 2. 调用系统函数向进程发信号 3. 由软件条件产生信号 4. 硬件异常产生信号 阻塞信号 1. 信号其他相关常见概念 2. 在内核中的表示 3. sigset_t 4. 信号集操作

    2024年02月11日
    浏览(10)
  • 操作系统课程设计-Linux 进程控制

    操作系统课程设计-Linux 进程控制

    目录 前言 1 实验题目 2 实验目的 3 实验内容 3.1 进程的创建 3.1.1 步骤 3.1.2 关键代码 3.2 子进程执行新任务 3.2.1 步骤 3.2.2 关键代码 4 实验结果与分析 4.1 进程的创建 4.2 子进程执行新任务 5 代码 5.1 进程的创建 5.2 子进程执行新任务          本实验为课设内容,博客内容为

    2024年01月18日
    浏览(12)
  • 【Linux】进程概念(冯诺依曼体系结构、操作系统、进程)-- 详解

    【Linux】进程概念(冯诺依曼体系结构、操作系统、进程)-- 详解

    1、概念 (1)什么是冯诺伊曼体系结构? 数学家冯·诺伊曼于 1946 年提出存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式储存。 冯·诺伊曼理论的要点是:计算机的数制采用二进制逻辑;计算机应该按照程序顺序执行。人们把冯·诺伊曼的

    2024年02月22日
    浏览(10)
  • Linux操作系统-06-进程与服务管理

    Linux操作系统-06-进程与服务管理

    使用ps命令查看进程。包括过滤进程信息 使用systemctl命令管理和运行Linux服务 进程(Process):操作系统正在运行的应用程序。任意一个进程,都会消耗CPU和内存资源, 服务(Service):通过服务控制面板直接启动的应用程序,也可能是操作系统启动时自启动的后台应用程序。

    2024年03月12日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包