Linux 进程替换 申请内存

本文介绍了Linux中使用exec系列函数进行进程替换,以`ps`命令为例展示了execve的使用方法。同时,讲解了如何创建和撤销环境变量,并探讨了内存申请的条件,包括物理内存和虚拟内存的使用。示例代码演示了申请1GB内存的过程。
摘要由CSDN通过智能技术生成

进程替换

(1)exec 系列替换过程:pcb 使用以前的只修改,进程实体更换。

1. #include <unistd.h>
2. exec 系类方法介绍以 execl 为例:
3. /*
4. *path:新替换的程序的路径名称
5. *arg :传给新程序主函数的第一个参数,一般为程序的名字
6. *arg 后面是剩余参数列表,参数个数可变,必须以空指针作为最后一个参数
7. */
8. int execl(const char* path, const char * arg,...);
9. int execlp(const char* file, const char * arg,...);
10. int execle(const char* path, const char * arg,...,char* const envp[]);
11. int execv(const char * path, char* const argv[]);
12. int execvp(const char * file, char* const argv[]);
13. int execve(const char * path, char* const argv[],char* const envp[]);

(2)以 ps 替换当前程序为例,介绍 exec 系统函数使用,注意该系列方法功能都一样,没有
区别,只是参数不同:

1.#include<stdio.h>
2.#include<stdlib.h>
3.#include<unistd.h>
4.
5.int main
6.{
7.   printf("main pid=%d",getpid());
8.   char*myargv[]={"ps","-f",0};
9.   execve("/usr/bin/ps",myargv,envp);//envp:环境变量
10.   //execvp("ps",myargv);//ececvp:系统调用
11.   //execv("/usr/bin/ps",myargv);
12.   //execle("/usr/bin/ps","ps","-f",(char *)0,envp);
13.   //execlp("ps","ps","-f",(char *)0);
14.   // execl("/usr/bin/ps","ps","-f",(char *)0);
15.   printf("execl err\n");
16.   exit(0); 
17.}

创建环境变量

创建(增加)环境变量:
首先,定义本地变量
在这里插入图片描述
然后,再把它换成环境变量
在这里插入图片描述
最后,也可以把它撤销环境变量
在这里插入图片描述

申请内存空间

申请malloc,1G内存能否成功?
1 物理内存剩余空间大于1G,能成功;
2 物理内存剩余空间不足1G,但是加上虚拟内存的空闲空间,大于1G,那么也能成功。

1.#include<stdio.h>
2.#include<stdlib.h>
3.#include<string.h>
4.#include<unistd.h>
5.
6.int main
7.{ 
8.   (char*) s=  (char*) malloc (1024*1024*1024);//物理内存2G,虚拟内存2G的情况下。申请2G可以,物理内存不够,可以使用虚拟内存。申请3G不可以,可以申请的内存不够。
9.    if (s == NULL)
10.{
11.      printf("malloc failed\n");
12.      exit(1);
13.   }
14.   memset(s,0,1024 *1024 *1024);
15.   exit(0);
16.}

这种情况下,申请3G不可以,可以申请的内存不够。(内核最大不能超过1G,用户不能超过3G)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值