今天给各位分享linux什么是子进程的知识,其中也会对linux进入子进程进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、linux 子进程与父进程一样 为什么还要子进程
- 2、linux什么是进程
- 3、Linux中为什么要创建子进程?
- 4、linux 中,进程的子进程与进程的线程,有什么区别
- 5、什么是linux的进程?
linux 子进程与父进程一样 为什么还要子进程
有时候一个工作量比较大,需要多个进程协同完成,这时就需要在父进程中创建一个或若干个子进程来一起完成工作。
linux什么是进程
您好,方法
linux是一个多用户多任务的操作系统,多用户是指多个用户可以在同一个时间用计算机,多任务是指linux可以同时执行那个多个任务,它可以在还未执行完一个任务时又执行另一个任务。
每当运行一个任务时,系统就会启动一个进程,进程是一个程序在其自身的虚拟地址空间中的一次执行活动,之所以要创建进程,就是为了使多个程序可以并发的执行。从而提高系统的资源利用率和吞吐量。
程序只是一个静态的指令集合,儿进程是一个程序的动态执行过程,它具有生命期,是动态的产生和消亡的。
方法2
1、进程是资源申请,调度和独立运行的单位,它使用系统中的运行资源,而程序不能申请系统资源,不能被系统调度,也不能作为独立运行的单位,它不占用系统的运行资源,
2、进程和程序无意义对应的关系,一方面一个程序可以由多个进程公用,即一个程序在运行过程中可以产生多个进程,另一个方面,一个进程在生命期内可以顺序的执行若干个程序。
3、在linux系统中总是又很多的进程同时运行,系统根据进程号pid区分不同的进程,系统启动后的第一个进程是init,它的pid是1,init是唯一一个由系统内核直接运行的进程。
4、新的进程可以用系统调用fork()来产生,就是从一个已经存在的旧进程中分出一个新进程来,旧进程就是新进程的父进程。
Linux中为什么要创建子进程?
创建子进程才能多道程序并发执行,linux初始化的时候会创建swap进程、然后是init进程和一个init进程的兄弟进程,所有的进程(运行的程序)都是从父进程演化出去的,你可以看看proc里的东西,写个程序打印出各个进程的父进程~网上有源代码的,要的话我给你
咱要先搞明白进程究竟是什么,进程是资源分配的单位,是运行的程序。既然是运行的程序,一个进程自然只能代表一个程序,多道程序设计自然而然就有了多进程的概念。举个例子,多进程(线程)下载,我们可以给一个需要下载的资源分片,多个进程从不同的片分时下载,这样就提高了下载速度,因为对一个程序分配的更多的资源,你试试开迅雷的时候打开个网页,保证你觉得奇卡无比,因为网络带宽(资源)被迅雷的多个进程占用了。其实在本地的多进程程序并不多见,比如word算是个典型的多进程程序,有个进程接受你的键盘输入,有拼写检查进程,有显示进程等等。大多数都用到网络上了,比如服务器。一台服务器要在“同一时间”处理来自很多客户端的请求,这就必须使用多进程。
linux 中,进程的子进程与进程的线程,有什么区别
haowawa586 的例子不好, switch case语句和进程线程的概念没关系.
我拿Windows举例子吧, 因为Linux的内核好像是没有线程概念的.
进程和线程的区别在于粒度不同, 进程之间的变量(或者说是内存)是不能直接互相访问的, 而线程可以, 线程一定会依附在某一个进程上执行.
我举个例子, 你在Windows下开一个IE浏览器, 这个IE浏览器是一个进程.
你用浏览器去打开一个pdf, IE就去调用Acrobat去打开, 这时Acrobat是一个独立的进程, 就是IE的子进程.
而IE自己本身同时用同一个进程开了2个网页, 并且同时在跑两个网页上的脚本, 这两个网页的执行就是IE自己通过两个线程实现的.
值得注意的是, 线程仍然是IE的内容, 而子进程Acrobat严格来说就不属于IE了, 是另外一个程序.
之所以是IE的子进程, 只是受IE调用而启动的而已.
什么是linux的进程?
fork()函数,Linux系统调用
头文件:
#include unistd.h
函数定义:
int fork( void );
返回值:
子进程中返回0,父进程中返回子进程ID,出错返回-1
函数说明:
一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程(child process)。fork函数被调用一次但返回两次。两次返回的唯一区别是子进程中返回0值而父进程中返回子进程ID。
子进程是父进程的副本,它将获得父进程数据空间、堆、栈等资源的副本。注意,子进程持有的是上述存储空间的“副本”,这意味着父子进程间不共享这些存储空间,它们之间共享的存储空间只有代码段。
‘fork()’函数用于从已存在进程中创建一个新进程。新进程称为子进程,而原进程称为父进程。你可以通过检查‘fork()’函数的返回值知道哪个是父进程,哪个是子进程。父进程得到的返回值是子进程的进程号,而子进程则返回0。以下这个范例程序说明它的基本功能: //------------------------------ example 1 pid_t pid;
switch (pid = fork())
{
case -1:
/* 这里pid为-1,fork函数失败 */
/* 一些可能的原因是 */
/* 进程数或虚拟内存用尽 */
perror("The fork failed!");
break;
case 0:
/* pid为0,子进程 */
/* 这里,我们是孩子,要做什么? */
/* ... */
/* 但是做完后, 我们需要做类似下面: */
_exit(0);
default:
/* pid大于0,为父进程得到的子进程号 */
printf("Child's pid is %d\n",pid);
}//------------------------------ example 2#define TRUE 1
while (TRUE){ /* repeat forever */
type_prompt(); /* display prompt on the screen */
read_command(command, parameters); /* read input from terminal */
if (fork() != 0){ /* fork off child process */
/* Parent code. */
waitpid(1, status, 0); /* wait for child to exit */
} else {
/* Child code. */
execve(command, parameters, 0); /* execute command */
}
}
这些是我再网上帮你找到的资料,看完之后,自己也学到不少,呵呵 ^^
希望它对你有点帮助吧,好好体会
还有一点就是进程的定义:进程是程序在计算机上的一次执行活动。当你运行一个程序,你就启动了一个进程。显然,程序是死的(静态的),进程是活的(动态的)。说白了进程就是正在运行的程序,比如说有程序 p1 和 p2,当程序p1运行是就是进程p1 ,如果正在运行的是p2,那么就是进程p2
关于linux什么是子进程和linux进入子进程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。