进程控制笔记(一)

本文详细介绍了Linux系统中进程的五种特性,并重点讲解了进程创建、进程状态及进程控制的相关操作,包括fork()、vfork()函数的使用,exec()函数族的功能,以及进程等待和结束的相关知识点。
摘要由CSDN通过智能技术生成

进程具有五种特性:

  1. 动态性
  2. 并发性
  3. 独立性
  4. 异步性
  5. 结构特性

进程的相关信息:

进程ID:在Linux系统中,每个进程都有其唯一的ID。在linux下编写关于进程的C程序,经常会使用到一个数据类型pid_t,这个类型专门用来定义进程的ID,是一个非负的整数。

进程的状态:三种基本状态分别是运行状态、等待状态、结束状态。还有就绪、挂起和僵尸等状态。

进程的切换:就是从正在运行的进程中收回处理器的使用权,等待运行进程进来时占有此时的处理器。

虚拟内存:在linux系统中,每个进程都运行在各自的虚拟内存中。

进程的基本操作:

进程创建

在linux系统中,提供了几个关于创建新进程的操作函数。

  • fork()函数:

创建一个新额进程,新进程为当前进程的子进程,那么当前的进程就被称为父进程。在一个函数中,可以通过fork()函数的返回值判断进程是在子进程中还是在父进程中。

使用fork()函数需要引用<sys/tpes.h>和<unistd.h>头文件,该函数的返回值类型为pid_t,一个非负整数。若程序运行在父进程中,返回的PID为子进程的进程号;若运行在子进程中,返回PID为0。

调用形式为

pid_t fork(void);

若调用fork()函数创建子进程失败,返回-1,并提示错误信息。

错误信息有两种形式

  • EAGAIN:表示fork()函数没有足够的内存用于复制父进程的分页表和进程结构数据。
  • ENOMEM:表示fork()函数分配必要的内核数据结构时,内存不足。

示例:创建子进程

#include<sys/types.h>
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main(void)
{
	pid_t pid;
	if((pid=fork())<0)
	{
		printf("fork error!\n");
		exit(1);
	}
	else if(pid==0)
	{
		prin
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值