一起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实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务

Java中实现线程的创建和启动的方法

《Java中实现线程的创建和启动的方法》在Java中,实现线程的创建和启动是两个不同但紧密相关的概念,理解为什么要启动线程(调用start()方法)而非直接调用run()方法,是掌握多线程编程的关键,... 目录1. 线程的生命周期2. start() vs run() 的本质区别3. 为什么必须通过 st

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

Go语言中Recover机制的使用

《Go语言中Recover机制的使用》Go语言的recover机制通过defer函数捕获panic,实现异常恢复与程序稳定性,具有一定的参考价值,感兴趣的可以了解一下... 目录引言Recover 的基本概念基本代码示例简单的 Recover 示例嵌套函数中的 Recover项目场景中的应用Web 服务器中

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

Java进程CPU使用率过高排查步骤详细讲解

《Java进程CPU使用率过高排查步骤详细讲解》:本文主要介绍Java进程CPU使用率过高排查的相关资料,针对Java进程CPU使用率高的问题,我们可以遵循以下步骤进行排查和优化,文中通过代码介绍... 目录前言一、初步定位问题1.1 确认进程状态1.2 确定Java进程ID1.3 快速生成线程堆栈二、分析

java String.join()方法实例详解

《javaString.join()方法实例详解》String.join()是Java提供的一个实用方法,用于将多个字符串按照指定的分隔符连接成一个字符串,这一方法是Java8中引入的,极大地简化了... 目录bVARxMJava String.join() 方法详解1. 方法定义2. 基本用法2.1 拼接