Linux编程基础期末冲刺——第六章进程

1.进程的属性保存在一个被称为___的结构体中,这个结构体中包括__、进程组、进程环境、进程的运行状态等
1、进程控制块/PCB 进程控制符/PID

2.进程在内存中可能会出现不同的状态,通常进程的状态被划分为5种:
初始态,就绪态,运行态,睡眠态,终止态
它们的关系为:
在这里插入图片描述

在这里插入图片描述

在每次调用fork()函数创建子进程后,子进程和父进程都会继续执行for循环,如当前i=1,则在i=0时父进程创建出的子进程与父进程本身都会创建一个子进程,如下图所示:
在这里插入图片描述
因此i=1时fork()函数调用后进程的数量为4,在下一轮循环中,这4个进程又都会创建一个新进程,进程的数量变为8,由此可得,在第5次循环结束后,进程的数量变为32,则子进程的数量为32-1=31。
总结:不跳出子进程,总的进程数量为2^i 即这里是2^5=32个进程
所以子进程为2^i-1
这里是2^5-1=31;

**简答:**见课本p151
在这里插入图片描述

看下面wait(NULL)
wait(NULL)
捕获二次子进程
所以先看子进程
pid1子进程睡眠3
pid2睡眠1
先执行pid2,再pid1
所以结果为

child process_2
child process_1
info1 from parent process
info2 from parent process

编程:
编写程序,父子进程打印不同东西

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
	pid_t pid;
	pid = fork();
	if (pid == -1)
	{
		perror("fork error");
		exit(1);
	}
	else if (pid > 0)
	{
		printf("This is parent process.\n");
	}
	else if (pid == 0)
	{
		printf("This is child process.\n");
	}
	return 0;
}

、、
、、
编写程序,创建子进程,使子进程通过exec更改代码段,执行cat命令

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
	pid_t pid;
	pid = fork();
	if (pid == -1)
	{
		perror("fork error");
		exit(1);
	}
	else if (pid > 0)
	{
		printf("parent process:pid:%d\n",getpid());
	}
else if(pid==0)
{
    printf("child process pid:%d\n",getpid());
    //execlp可以使用相对路径
    execlp("cat","-b","exec.c",NULL);//NULL结尾  exec.c是文件名
}
return 0;
}

显示出文件内容 cat命令
相当于
cat -b exec.c

在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux基础教程是为初学者提供关于Linux操作系统的基础知识和技能的教程。在学习Linux基础教程时,你将了解Linux的起源和发展历程,学习Linux的基本命令和文件系统,以及如何在Linux系统上进行常见的操作和管理任务。 在Linux基础教程,你将学习到以下内容: 1. Linux的起源和发展:Linux最初是由芬兰赫尔辛基大学学生Linus Torvalds在1991年设计开发的。通过学习Linux的起源和发展历程,你将了解到Linux的特点和优势。 2. Linux的安装和配置:学习如何在计算机上安装Linux操作系统,并进行必要的配置。你将了解如何选择适合自己的Linux发行版,并进行基本的系统设置。 3. Linux的基本命令和文件系统:学习Linux的基本命令,如ls、cd、mkdir、rm等。你将了解Linux的文件系统结构和目录,以及如何在文件系统浏览和管理文件。 4. 用户和权限管理:了解Linux系统的用户和组的概念,学习如何创建和管理用户和组。同时,你还将学习如何设置文件和目录的权限,以保护系统的安全性。 5. 软件包管理:学习如何使用包管理器来安装、更新和删除软件包。你将了解常用的软件包管理工具,如apt、yum等。 6. 远程连接和文件传输:学习如何通过SSH协议远程连接到Linux系统,并进行文件传输。你将了解如何使用SSH客户端和SCP命令进行远程操作。 7. Shell脚本编程:学习如何编写Shell脚本来自动化任务。你将了解基本的Shell编程语法和常用的控制结构。 通过学习Linux基础教程,你将建立起对Linux操作系统的基本理解和技能,为进一步深入学习和使用Linux打下坚实的基础。<span class="em">1</span><span class="em">2</span><span class="em">3</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值