OS第二篇:进程创建fork()函数实验

本文介绍了如何使用fork()函数创建进程,并进行相关实验。实验要求进程显示各自PID和PPID,通过观察分析进程状态。文章详细解释了fork()的工作原理,描述了进程复制的过程,并给出了代码实现及执行结果分析。最后鼓励读者面对难点,尝试解决问题。
摘要由CSDN通过智能技术生成

    最近做了一次实验:
    1.编写一段程序,利用系统调用fork()函数创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符串,其中,每个进程显示其pid值,及其父进程的pid值。(getpid返回当前进程标识,getppid返回父进程标识。)类似如下显示:父进程显示’"我是爸爸.pid:…爸爸的爸爸是ppid:… ",子进程分别显示’"我是大儿子.pid:…, 我的爸爸是ppid:… "和’“我是小女儿.pid:…, 我的爸爸是ppid:…”。试观察并分析屏幕上的显示结果。
    2. 运行终端,在执行程序之前执行命令“ps -af”,执行程序之后,通过在多进程执行过程中执行命令“ps -af”,显示当前进程状态。试观察并分析屏幕上的显示结果。
接下来阿伟将给大家详细讲解,大家注意听哦:
一、我们先来了解什么是fork()函数:
    一个进程包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,即两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。
    一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同,相当于克隆了一个自己。
    一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程(child process)。fork函数被调用一次但返回两次。
    :为什么fork会返回两次?
    :在复制时复制了父进程的堆栈段,所以两个进程都停留在fork函数中,等待返回。因此fork函数会返回两次,一次是在父进程中返回,另一次是在子进程中返回,这两次的返回值是不一样的。
二、代码实现
    代码1:

#include <stdio.h>
#include<unistd.h>
int main(){
   
	int pid;
	pid=fork();
	int i = 0;
	for(i=0;i<2;i++){
   
		if(pid
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值