一起talk C栗子吧(第七十八回:C语言实例--创建进程)
各位看官们,大家好。上一回中咱们说的是DIY ls命令续的样例。这一回咱们说的样例是:创建进程。闲话休提。言归正转。
让我们一起talk C栗子吧!
看官们。关于进程的概念,我们简单做个简单的介绍:进程就是在系统中执行着的程序。比方我们正在使用的vim就是一个进程。我们能够使用ps命令查看一下,在终端中输入ps x命令,能够得到以下结果:
PID TTY STAT TIME COMMAND
1550 ? 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);
else
return 0;
}
以下是程序的执行结果。请大家參考:
./s //执行编译完的程序
pid is: 5456 //显示新创建进程的PID
又一次打开一个终端,而且使用ps命令查看当前系统中的进程,结果例如以下:
PID TTY STAT TIME COMMAND
1550 ?
Ssl 0:00 cinnamon-session --session cinnamon
... //其他系统相关的进程。不一一列出
5375 pts/1 S+ 0:00 vim Ex060_CreatProcess.c
5434 pts/3 Ss 0:00 bash
5455 pts/2 S+ 0:00 ./s //该进程是我们编译后的程序s
5456 pts/2 S+ 0:00 ./s //从PID能够看出,该进程是程序s创建的新进程
5457 pts/3 R+ 0:00 ps x
看官们,正文中就不写代码了,具体的代码放到了我的资源中,大家能够点击这里下载使用。
各位看官。关于创建进程的样例咱们就讲到这里。欲知后面还有什么样例,且听下回分解。
一起talk C栗子吧(第七十八回:C语言实例--创建进程)的更多相关文章
- 一起talk C栗子吧(第十二回:C语言实例--单链表一)
各位看官们,大家好.从今天開始,我们讲大型章回体科技小说 :C栗子.也就是C语言实例.闲话休提, 言归正转. 让我们一起talk C栗子吧! 看官们,上一回中咱们没有说详细的样例,并且是说了样例中的文 ...
- 一起talk C栗子吧(第一百三十三回:C语言实例--创建进程时的内存细节)
各位看官们.大家好,上一回中咱们说的是从内存角度看进程和线程的样例.这一回咱们说的样例是:创建进程时的内存细节.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们.我们都知道使用fork函数能 ...
- 一起talk C栗子吧(第二十二回:C语言实例--队列一)
各位看官们,大家好,上一回中咱们说的是表达式求值的样例,该样例使用了栈,这一回咱们说的是栈的 兄弟:队列. 闲话休提,言归正转.让我们一起talk C栗子吧. 我们在这里说的队列是一种抽象的数据结构, ...
- 一起talk C栗子吧(第九十八回:C语言实例--使用消息队列进行进程间通信二)
各位看官们,大家好,上一回中咱们说的是使用消息队列进行进程间通信的样例.这一回咱们接着上一回的内容继续说使用消息队列进行进程间通信.闲话休提.言归正转.让我们一起talk C栗子吧! 我们在上一回中介 ...
- JAVA之旅(二十八)——File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤
JAVA之旅(二十八)--File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤 我们可以继续了,今天说下File 一.File概述 文件的操作是非常 ...
- (七十八)使用第三方框架INTULocationManager实现定位
前面(第七十五.七十六篇)讲述了如何通过CoreLocation获取位置,授权.获取等相当复杂,如果借助于第三方框架,可以简单的实现授权与定位. 首先在GitHub中搜索LocationManager ...
- Unity3D研究院之Jenkins的使用(七十八)
长夜漫漫无心睡眠,来一篇嘿嘿.我相信如果已经用Shell脚本完成IOS和Android打包的朋友一定需要Jenkins 怎么才能让策划打包ipa和apk?怎么才能彻底省去程序的时间,只要在同一局域网内 ...
- 一起talk C栗子吧(第二十五回:C语言实例--二分查找)
各位看官们,大家好,上一回中咱们说的是顺序查找的样例,这一回咱们说的样例是:二分查找.闲话休 提,言归正转. 让我们一起talk C栗子吧. 看官们,我们在上一回中说了查找的相关内容,而且介绍了一种查 ...
- 一起talk C栗子吧(第九十六回:C语言实例--使用共享内存进行进程间通信二)
各位看官们.大家好,上一回中咱们说的是使用共享内存进行进程间通信的样例,这一回咱们接着上一回内容继续说使用共享内存进行进程间通信. 闲话休提,言归正转.让我们一起talk C栗子吧! 我们在上一回中介 ...
随机推荐
- kafka快速开始教程
此教程假设你刚刚开始没有任何 Kafka 或 ZooKeeper 数据.Kafka的控制台脚本在类Unix和Windows平台不同,Windows平台使用bin\windows\\代替bin/,脚本的 ...
- unity, inspector debug
以前经常因为脚本中private变量不在inspector界面中显示,不方便观察其值的变化,所以本该用private的用了public. 今天发现,原来inspector有个选项,如图,平常勾选的是N ...
- [容器]gcr.io镜像下载
下载gcr.io的镜像hosts文件 把下面两行加入到/etc/hosts中. 更多在这里http://wst.so/files/hosts 61.91.161.217 gcr.io 61.91.1 ...
- Django的自定义标签
Django提供了自定义标签功能,可以方便常用方法的重复使用. 标签的本质就是函数,标签名就是函数名. 注意点: 1.需要到django.template对象. 2.register = templa ...
- C++注释规范
1 源文件头部注释 列出:版权.作者.编写日期和描述. /************************************************* Copyright:bupt Auth ...
- 【精】cookie、 sessionStorage 、localStorage之间的异同
1.cookie:存储在用户本地终端上的数据.有时也用cookies,指某些网站为了辨别用户身份,进行session跟踪而存储在本地终端上的数据,通常经过加密.一般应用最典型的案列就是判断注册用户是否 ...
- 深入Redis漏斗限流
漏斗限流是最常用的限流方法之一,漏斗流水的速率大于灌水的速率,漏斗就永远装不满,反之水就会溢出. 所以漏斗的剩余空间就代表当前行为可以持续进行的数量,水流出的速率代表系统允许该行为的最大频率. imp ...
- java 服务接口API限流 Rate Limit
一.场景描述 很多做服务接口的人或多或少的遇到这样的场景,由于业务应用系统的负载能力有限,为了防止非预期的请求对系统压力过大而拖垮业务应用系统. 也就是面对大流量时,如何进行流量控制? 服务接口的流量 ...
- 访问JavaBean
<jsp:useBean> 标签可以在JSP中声明一个JavaBean,然后使用.声明后,JavaBean对象就成了脚本变量,可以通过脚本元素或其他自定义标签来访问.<jsp:use ...
- Web应用程序使用Hibernate
在本文中,我们将学习使用hibernate创建一个Web应用程序. 对于创建Web应用程序,我们使用JSP表示逻辑层,使用Bean类表示数据,以及使用DAO类操作数据库.在hibernate中创建简单 ...