1.fork()函数
fork()的作用是创建一个进程,它有两个返回值。一个值是调用fork的父进程中fork()返回所创建子进程的id号,另一值是在fork创建的子进程中fork()返回值0,但是在子进程中,虽然fork()的返回值是0,但是子进程的id不是零。
注意:fork调用,新建的子进程拷贝父进程的所有资源,比如内存,堆栈等,使用fork系统调用产生父子进程,父子进程的执行循序是由OS调度的,即父子进程的执行顺序不确定。
2. vfork()函数的功能
vfork新建的子进程则是和父进程共享所有的资源,在子进程中对数据的修改也就是对父进程数据的修改,并且是vfork建立的子进程先执行,只有子进程调用了_exit() 或者exit()后父进程才会继续执行。
3.exec函数族
exec用被执行的程序替换调用它的程序,它和fork区别很大,fork()是创建一个新的进程,产生一个新的PID,而exec是启用一个新的程序代替原有的进程,进程的PID不会改变。
1). int execl(const char *path, const char * arg0, …)
path: 被执行程序名,含完整路径
arg0-n:被执行程序名需要的命令行参数,以空指针NULL结束,其中arg0表示可执行程序名。
示例如下:
#include <unistd.h>
int main()
{
execl("/bin/ls","ls","-l","/etc/passwd",(char*)0);
return 0;
}
执行结果如下:
-rw-r--r-- 1 root root 1724 Apr 9 13:21 /etc/passwd
2). int execlp(const char *path, const char * arg0, …)
path: 被执行程序名,不含路径,从PATH环境变量中查找改程序。
arg0-n:被执行程序名需要的命令行参数,以空指针NULL结束,其中arg0表示可执行程序名。
示例如下:
#include <unistd.h>
int main()
{
execlp("ls","ls","-l","/etc/passwd",(char*)0);
return 0;
}
执行结果同上。
3). int execv(const char *path, char *const argv[])
参数:
path:别执行程序名,含完整路径
argv[]:被执行程序所需的命令行参数组
示例如下:
#include <unistd.h>
int main()
{
char *argv[]={"ls","-l","/etc/passwd",NULL};
execv("/bin/ls",argv);
return 0;
}
执行结果同上
4). int system(const char* string) 调用fork产生子进程, 由子进程来调用/bin/sh -c string来执行参数string所代表的参数。
示例如下:
#include <stdlib.h>
void main()
{
system("ls -l /etc/passwd");
}
执行结果同上
4. pid_t wait(int *status) 阻塞父进程,直到该父进程的某个子进程退出
分享到:
相关推荐
【进程控制实验】是Linux操作系统课程中的一个重要环节,旨在帮助学生深入理解进程的概念以及进程间的交互。通过实验,学生能够掌握以下关键知识点: 1. **进程的概念与程序的区别**: 进程是操作系统资源分配的...
操作系统实验,压缩包中包括Linux和windows进程控制源代码及实验报告。 进程控制实验题目: 设计并实现Unix的“time”命令。“mytime”命令通过命令行参数接受要运行的程序,创建一个独立的进程来运行该程序,并...
操作系统进程控制实验报告 本实验报告主要讲述了操作系统进程控制的实验报告,涵盖了进程概念、并发概念、信号机理、进程控制等知识点。下面是对实验报告的详细解读和知识点总结: 1. 进程概念: 进程是操作系统...
利用简单的结构和控制方法模拟进程结构、进程状态和进程控制。 (二) 实验内容与步骤: 用PCB表示整个进程实体,利用随机数方法或键盘控制方法模拟进程执行中产生的事件。或者利用鼠标或者键盘中断的基于图形接口...
进程控制是操作系统中的核心概念,它涉及到如何管理和调度系统中的各个任务,使得计算机能有效地运行多个并发执行的程序。在操作系统的学习中,理解和掌握进程控制的原理至关重要。本项目是作者使用VC++编写的进程...
在这个“操作系统实验1:进程控制与描述”中,我们将深入理解进程的基本概念,掌握进程的创建、同步、通信以及调度等核心知识点。 首先,我们需要了解什么是进程。在操作系统中,进程是程序的一次动态执行过程,它...
在操作系统中,进程控制是一个至关重要的概念,它涉及到如何创建、管理和终止进程,以及如何在多任务环境下有效地分配处理器资源。本文将深入探讨进程控制,特别是基于时间片轮转的调度算法。 进程是操作系统中的...
操作系统进程控制实验主要涉及到以下几个关键知识点: 1. **进程**:在操作系统中,进程是程序在执行过程中的一个实例,是资源分配的基本单位。每个进程都有自己的独立内存空间,可以并发执行。 2. **进程控制块...
进程控制块(Process Control Block,简称PCB)是操作系统中实现这一功能的关键数据结构。本篇将深入探讨PCB的定义、组成、作用以及在操作系统中的重要性。 **PCB的定义** PCB是操作系统用于存储关于进程状态和控制...
### 进程控制实验知识点详解 #### 一、实验背景与目标 本次实验的主要目的是让学生深入理解操作系统中的进程控制机制。通过实际编程操作,学生能够更直观地掌握进程的概念及其与程序之间的区别,并且能够认识到...
Linux 进程基本管理与进程控制 Linux 进程基本管理是计算机操作系统中一个非常重要的概念,它涉及到进程的创建、管理和控制。在 Linux 环境下,进程是操作系统中一个基本的执行单元,每个进程都有其自己的虚拟地址...
在Linux操作系统中,进程控制是系统管理的核心部分,它涉及到如何创建、管理、通信和终止进程。本主题“LINUX进程控制编程”旨在深入探讨这些概念,并教你如何在实际编程中应用它们。以下是对这个主题的详细阐述: ...
### 进程控制(Linux)操作系统实验 #### 实验背景 在现代计算机系统中,操作系统是用户与硬件之间的重要桥梁,而进程管理则是操作系统的核心功能之一。进程是程序的一次执行过程,是系统进行资源分配和调度的基本...
设计内容:信号通信与进程控制 主要包括如下几项: (l)进程的创建:编写一段程序,使用系统调用fork()创建两个或多个子进程。当此程序运行时,在系统中有一个父进程和其余为子进程活动。 (2)进程的控制:在程序中...
操作系统 进程控制。。。。。。。。。。。。。。。。。。
在本实验“计算机操作系统-实验一:进程控制和调度算法”中,我们将深入探讨两个关键概念:进程控制和调度算法。这两个概念是操作系统中执行多任务并行处理的关键,对系统的性能和响应时间有着直接影响。 **进程...
本主题将深入探讨“Java模拟进程调度算法和进程控制”,涵盖五种主要的调度算法以及进程控制的相关概念。 1. **先来先服务(FCFS, First-Come, First-Served)**: FCFS是最简单的调度策略,按照进程到达的顺序...
一、什么是进程控制 进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态之间的转换等功能。 简而言之就是:进程控制就是实现进程状态的转换。 二、如何实现...
利用简单的结构和控制方法模拟进程结构、进程状态和进程控制。 内容: 1.能够模拟进程的创建与撤销过程; 2.可对进程的状态进行全面的控制; 3.按先进先出方式管理就绪和阻塞队列,能够按队列形式输出进程状态 4....