一起talk C栗子吧(第七十八回:C语言实例--创建进程)

2024-03-12 05:08

本文主要是介绍一起talk C栗子吧(第七十八回:C语言实例--创建进程),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


各位看官们,大家好,上一回中咱们说的是DIY ls命令续的例子,这一回咱们说的例子是:创建进程。闲话休提,言归正转。让我们一起talk C栗子吧!

看官们,关于进程的概念,我们简单做个简单的介绍:进程就是在系统中运行着的程序。比如我们正在使用的vim就是一个进程。我们可以使用ps命令查看一下,在终端中输入ps x命令,可以得到以下结果:

  PID TTY      STAT   TIME COMMAND1550 ?        Ssl    0:00 cinnamon-session --session cinnamon...                              //其它系统相关的进程,不一一列出5276 pts/2    Ss     0:00 bash   //我们使用的终端也是一个进程5297 pts/2    S+     0:00 vim    //我们使用的vim也是一个进程5298 pts/1    R+     0:00 ps x   //ps命令本身也是一个进程

进程是一个比较抽象的概念,通过上面的实际展示,我想大家应该对进程有个直观的印象了吧。回想我当年听到进程这个东西的时候,还在使用windows,于是便打开任务管理器来观看进程。现在想想,当时这种做法也不错,如果有哪位看官在使用Windows系统,可以这样试试,哈哈。

我们在终端中输入某个命令,然后敲下回车时就创建了一个进程。刚才,我们使用ps命令查看进程就是在系统中创建了一个进程,进程名字叫:ps,也就是上面运行结果中的COMMAND这一列。进程的名字都是字母,有时候比较长(比如上面运行结果中的第一个进程名就比较长),因此,系统对进程进行编号管理。进程的编号叫作PID,也就是进程ID。上面运行结果中的第一列就是进程ID。进程ID是从0开始的整数,不同的系统对于创建的进程数量有限制,因此,进程ID是一个有限的整数。在这些ID中0和1是特殊的ID,系统保留下来,供自己使用。基于怎么使用,咱们以后再介绍。

看官们,现在知道如何创建进程了吗?“输入命令并且执行“。这位看官说的完全正确。接下来我们看看代码中是如何创建进程的。在实际的代码中使用fork()函数创建进程。该函数运行成功时会返回一个大于0的值,该值就是新创建进程的PID。如果运行失败,那么返回-1.接下来咱们举例子进行说明。

把下面的代码写入文件中保存,然后编译并且运行。

#include<unistd.h>
#include<stdio.h>int main()
{pid_t pid;pid = fork();sleep(5);if(pid > 0)printf("pid is: %d \n",pid);elsereturn 0;}

下面是程序的运行结果,请大家参考:

./s            //执行编译完的程序
pid is: 5456   //显示新创建进程的PID

重新打开一个终端,并且使用ps命令查看当前系统中的进程,结果如下:

  PID TTY      STAT   TIME COMMAND1550 ?        Ssl    0:00 cinnamon-session --session cinnamon...                              //其它系统相关的进程,不一一列出5375 pts/1    S+     0:00 vim Ex060_CreatProcess.c5434 pts/3    Ss     0:00 bash5455 pts/2    S+     0:00 ./s   //该进程是我们编译后的程序s5456 pts/2    S+     0:00 ./s   //从PID可以看出,该进程是程序s创建的新进程5457 pts/3    R+     0:00 ps x

看官们,正文中就不写代码了,详细的代码放到了我的资源中,大家可以点击这里下载使用。

各位看官,关于创建进程的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解。


这篇关于一起talk C栗子吧(第七十八回:C语言实例--创建进程)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/800221

相关文章

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

[Linux]:进程(下)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. 进程终止 1.1 进程退出的场景 进程退出只有以下三种情况: 代码运行完毕,结果正确。代码运行完毕,结果不正确。代码异常终止(进程崩溃)。 1.2 进程退出码 在编程中,我们通常认为main函数是代码的入口,但实际上它只是用户级

顺序表之创建,判满,插入,输出

文章目录 🍊自我介绍🍊创建一个空的顺序表,为结构体在堆区分配空间🍊插入数据🍊输出数据🍊判断顺序表是否满了,满了返回值1,否则返回0🍊main函数 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~ 🍊自我介绍   Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”

C++操作符重载实例(独立函数)

C++操作符重载实例,我们把坐标值CVector的加法进行重载,计算c3=c1+c2时,也就是计算x3=x1+x2,y3=y1+y2,今天我们以独立函数的方式重载操作符+(加号),以下是C++代码: c1802.cpp源代码: D:\YcjWork\CppTour>vim c1802.cpp #include <iostream>using namespace std;/*** 以独立函数

实例:如何统计当前主机的连接状态和连接数

统计当前主机的连接状态和连接数 在 Linux 中,可使用 ss 命令来查看主机的网络连接状态。以下是统计当前主机连接状态和连接主机数量的具体操作。 1. 统计当前主机的连接状态 使用 ss 命令结合 grep、cut、sort 和 uniq 命令来统计当前主机的 TCP 连接状态。 ss -nta | grep -v '^State' | cut -d " " -f 1 | sort |