多进程基本概念

#include <sys/wait.h>

int main() {
	char buf[MAXLINE];
	pid_t pid;
	int status;

	printf("%% ");
	while (fgets(buf, MAXLINE, stdin) != NULL) {
		if (buf[strlen(buf) - 1] == ‘/n‘)
			buf[strlen(buf) - 1] = 0;
                /* Child */
		if (pid == 0) {
			execlp(buf, buf, (char *)0);
		}

                /* Parent */
		pid = waitpid(pid, &status, 0);
		printf("%% ");
	}

	return 0;
}

1、一个现有的进程通过调用函数fork()来创建一个新进程,这个新进程(子进程)是调用进程(父进程)的副本。

pid_t fork();

fork()函数会返回两次,在父进程中返回子进程的进程ID,在子进程中返回0。

2、在子进程中我们通过调用函数execlp()来执行输入的命令行,从而在新进程中载入新的程序。

3、在父进程中,我们调用函数waitpid()来等待子进程的终止。在子进程结束前,父进程会被挂起,直到子进程结束并通过参数status返回终止时的信息。

时间: 2024-11-08 21:30:54

多进程基本概念的相关文章

多线程及多进程部分概念汇总

1.线程的基本概念.线程的基本状态及状态之间的关系? 1.1线程概念 >>是进程中的一个执行控制单元,执行顺序流.同类的多个线程共享一块内存空间和一组系统资源,线程本身有一个供程序执行时的堆栈.线程在切换时负荷小,因此,线程也被称为轻负荷进程. 一个进程中至少有一个线程在负责控制程序的执行 一个进程中如果只有一个执行路径,这个程序称为单线程 一个进程中有多个执行路径时,这个程序成为多线程 1.2线程的基本状态 1.新建 new语句创建的线程对象处于新建状态,仅被分配了内存. 2.等待 当线程在

Python--多线程、多进程常用概念

一.常用概念 进程 进程就是一个程序在一个数据集上的一次动态执行过程.进程一般由程序.数据集.进程控制块三部分组成. 线程 线程的出现是为了降低上下文切换的消耗,提高系统的并发性,并突破一个进程只能干一样事的缺陷,使到进程内并发成为可能. 线程也叫轻量级进程,它是一个基本的CPU执行单元,也是程序执行过程中的最小单元,由线程ID.程序计数器.寄存器集合和堆栈共同组成.线程的引入减小了程序并发执行时的开销,提高了操作系统的并发性能.线程没有自己的系统资源. 线程切换的开销远远小于进程切换的开销 切

关于Python和Java的多进程多线程计算方法对比

原文请见 关于Python和Java的多进程多线程计算方法对比 搞大数据必须要正视的一个问题就是并行计算.就像执行一件任务一样,大伙一起同时干,才有效率,才会很快出成果.正所谓"众人拾柴火焰高"~ 对于并行计算,有很多高大上的概念,我也不全懂.这里就单单罗列一下我对于多进程和多线程计算的理解和总结. 在计算机中,处理一个任务,可以在一个进程中,也可以在一个线程中,确切的说,执行的话都得靠一个个线程来.在我们做某件事的时候,往往需要同时干多个任务才能达到我们所要的效果,比如说看电影,就要

python学习_day32_并发编程之多进程

一.背景知识 顾名思义,进程即正在执行的一个过程.进程是对正在运行程序的一个抽象.进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所有内容都是围绕进程的概念展开的. PS:即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力.将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用和空间多路复用+硬件上支持隔离),没有进程的抽象,现代计算机将不复存在. #一 操作系统的作用: 1:隐藏丑陋复杂的

[转载]详解主流浏览器多进程架构:Chrome、IE

http://www.cnbeta.com/articles/109595.htm 随着Web浏览器重要性的日益突出,恶意软件.木马.间谍软件等网络攻击也呈现逐渐的上升.而面对 如此众多的潜在威胁,为了确保用户的安全性和稳定性,浏览器不得不改进浏览器的性能,其中之一就是向用户提供多进程浏览.在浏览器中添加多进程浏览功能之 后,即使是浏览器其中的一个进程出现了崩溃现象,其他的进程也不会受到影响.例如,如果一个网站中有漏洞或包含恶意代码,它就有可能摧毁当前运行在这个网 站上的标签,但是它却不会影响其

进程概念总结

最近刚刚学习多进程,对于多进程的概念我自己总结一下 每一个程序启动后都会在系统中产生一个进程来处理这个程序 但是一个进程运行速度毕竟有限,在程序中有一些比较耗时的操作程序就只能是卡死的状态,为了解决这个问题,就出现了多进程.让耗时的工作创建一个子进程让子进程去工作,主进程运行自己的.但子进程多了也会出现问题:1.孤儿进程2.僵尸进程 但是使用多进程的时候又出现了进程之间数据共享的问题,这时候进程间的通信就需要解决.目前知道的解决办法是用:1.文件2.管道3.队列4.共享内存以上数据共享类型的区别

多进程(multiprocessing module)

一.多进程 1.1 多进程的概念 由于GIL的存在,python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程.Python提供了非常好用的多进程包multiprocessing,只需要定义一个函数,Python会完成其他所有事情.借助这个包,可以轻松完成从单进程到并发执行的转换.multiprocessing支持子进程.通信和共享数据.执行不同形式的同步,提供了Process.Queue.Pipe.Lock等组件. multipr

python数据结构和GIL及多进程

一 数据结构和GIL 1 queue 标准库queue模块,提供FIFO的queue.LIFO的队列,优先队列Queue 类是线程安全的,适用于多线程间安全的交换数据,内部使用了Lock和Condition 为什么说容器的大小不准确,其原因是如果不加锁,是不可能获取到准确的大小的,因为你刚读取了一个大小,还没取走,有可能被就被其他线程修改了,queue类的size虽然加了锁,但是依然不能保证立即get,put就能成功,因为读取大小和get,put方法是分来的. 2 GIL 1 简介 全局解释器锁

Java中的进程与线程(总结篇)

详细文档: Java中的进程与线程.rar 474KB 1/7/2017 6:21:15 PM 概述: 几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程. 进程与线程: 进程是指处于运行过程中的程序,并且具有一定的独立功能.进程是系统进行资源分配和调度的一个单位.当程序进入内存运行时,即为线程. 进程拥有以下三个特点: 1:独立性:进程是系统中独立存在的实体,它可以独立拥有资源,每一个