IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux 6:进程替换,exec系列方法,malloc -> 正文阅读

[系统运维]Linux 6:进程替换,exec系列方法,malloc


1. 进程替换

  • fork+exec是系统创建新进程的一种方式。
  • exec替换之后子进程的id号不变,父进程也不变,PCB也不变,只替换了进程实体。

2. exec系列替换方法

在这里插入图片描述

2.1 execl

int execl(const char *pathname,const char*arg,.../*(char*)NULL*/);
在这里插入图片描述

在这里插入图片描述

2.2 execlp

int execlp(const char*file,const chat*arg,...,/*(char*)NULL*/);
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3 execle

int execle(const char *pathname,const char*arg,...,/*,(char*)NULL,char*const envp[]*/);
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3.1 自定义环境变量

在这里插入图片描述

2.4 execv

int execv(const char *pathname,char* const argv[]);
在这里插入图片描述
在这里插入图片描述

2.5 execvp

int execvp(const char *file,char *const argv[]);
在这里插入图片描述

2.6 execve

int execve(const char *pathname,char *const argv[],char * const envp[]);
在这里插入图片描述

3. 从进程的视角看堆区内存申请与释放的有关问题

  • (1) c 语言中所谓的内存泄漏问题
  • (2) malloc 申请一块空间,直到进程结束都没有释放,是否产生内存泄漏?
  • (3) malloc 申请 1G 的内存空间是否能成功?
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

int main()
{
	char * s = (char*)malloc(1024*1024*1024);
	if(s==NULL)
	{
		printf("malloc failed\n");
		exit(1);
	}
	memset(s,0,1024*1024*1024);
	exit(0);
}
  • (4) 在物理内存只有 2G 的系统中,malloc 能否申请 2G 空间,怎么思考?

malloc申请1G内存的时候系统可以提供,所以直接分配;malloc申请2G时候也可以,物理内存是2G,如果物理内存不够,可以引入虚拟内存。
malloc申请3G内存的时候,不可以,因为在32位操作系统上面,物理内存只有4G,而内核占了1给,除去代码区,数据区,栈区以外,堆区最大内存小于3G,所以申请3G内存会失败。
在这里插入图片描述

虚拟内存

  • (5) malloc 与 fork,父进程堆区申请的空间复制后,子进程也会有一份,也需要释放?

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-19 12:06:11  更:2022-05-19 12:07:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:38:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码