当前位置: 首页 > wzjs >正文

头条站长平台seo的基本工作内容

头条站长平台,seo的基本工作内容,万网是什么网站,做标书网站目录 引言 1.单进程版程序替换 2.程序替换原理 3.6种替换函数介绍 3.1 函数返回值 3.2 命名理解 3.3 环境变量参数 引言 用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),我们所创建的所有的子进程,执行的代码&#x…

目录

引言

1.单进程版程序替换

2.程序替换原理

3.6种替换函数介绍

3.1 函数返回值

3.2 命名理解

3.3 环境变量参数


引言

        用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),我们所创建的所有的子进程,执行的代码,都是父进程代码的一部分!如果我们想让子进程执行新的程序呢???执行全新的代码和访问全新的数据,不在和父进程有瓜葛,这时子进程往往要调用一种exec函数以执行另一个程序

1.单进程版程序替换

execl 介绍:

第一个参数是要替换程序的路径。

第二个参数是可变参数列表:这里以NULL结束,命令行执行替换程序输入什么就传入什么。

代码示例:将子进程替换为命令行中 ls -a -l 

执行结果:

可以发现子进程id发生进程程序替换时并没有改变,并且没有执行代码中的:

2.程序替换原理

         当进程调用一种exec函数时,从外存中将新程序替换掉该进程的用户空间代码和数据,所以上面代码中第二个printf没有执行。从新程序的启动例程开始执行。且调用exec并不创建新进程,所以调用exec前后子进程的id并未改变,只是代码和数据替换。

3.6种替换函数介绍

#include <unistd.h>


int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char *arg, ...);
int execle(const char *path, const char *arg, ...,char *const envp[]);


int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);

int execvpe(const char *file,char *const argv[],char* const envp[]);

 

3.1 函数返回值

        如果进程程序替换成功,不会有返回值,不会执行原程序调用替换后的代码。失败有返回值,执行原程序调用替换后的代码。所以我们不需要接收返回值,可以直接让原程序退出。

3.2 命名理解

这些函数原型看起来很容易混,但只要掌握了规律就很好记。

l(list):表示参数采用可变参数列表,用来传递命令行参数

v(vector):参数采用数据传递

p(path):从环境变量PATH中寻找程序

e(env):表示自己维护环境变量

exec调用举例

#include <unistd.h>
int main()
{char *const argv[] = {"ps", "-ef", NULL};char *const envp[] = {"PATH=/bin:/usr/bin", "TERM=console", NULL};execl("/bin/ps", "ps", "-ef", NULL);// 带p的,可以使用环境变量PATH,无需写全路径execlp("ps", "ps", "-ef", NULL);// 带e的,需要自己组装环境变量execle("ps", "ps", "-ef", NULL, envp);execv("/bin/ps", argv);// 带p的,可以使用环境变量PATH,无需写全路径execvp("ps", argv);// 带e的,需要自己组装环境变量execve("/bin/ps", argv, envp);exit(0);
}

事实上,只有execve是真正的系统调用,上面6个函数最终都调用 execve,所以execve在man手册 第2节,其它函数在man手册第3节。

3.3 环境变量参数

        环境变量是由父进程传递给子进程的,在程序替换时,不会替换掉进程中环境变量,所以要替换的进程环境变量与父进程环境变量是相同的,如果不是传入自己定义的环境变量,没有必要调用带e的程序替换函数。

 char* const myenv[]={"MYENY1=111111111","MYENY2=111111111","MYENY3=111111111","MYENY4=111111111",NULL};execle("./mytest","mytest","-a","-b",NULL,myenv);//传自己定义的环境变量,不是新增,而是覆盖传递

若传入的环境变量,不是在原来环境变量中新增,而是覆盖。

mytest.cc:

1 #include <iostream>2 #include <unistd.h>3 4 //程序替换,可以将命令行参数和环境变量,传递到被替换的程序的main函数中5 6 int main(int argc,char* argv[],char* env[])7 {8     for(int i =0;i<argc;i++)9     {10         std::cout << i << " -- " << argv[i] << std::endl;                                                                                                11     }12 13     //打印环境变量 指针数组 环境变量在系统中是全局存在的 父进程是bash的子进程, 子进程环境变量是父进程给的14     for(int i = 0;environ[i]!=NULL;i++)15     {16         std::cout<<i<<" : "<<env[i]<<std::endl;17     }18 19     return 0;20 }

结果:

gitee链接

本篇结束!

http://www.dtcms.com/wzjs/1976.html

相关文章:

  • 自己建网站要多少钱河南百度关键词优化排名软件
  • 匿名网站建设营销托管全网营销推广
  • 品牌制作网站网络营销的表现形式有哪些
  • 桂林北京网站建设广州头条今日头条新闻
  • 自媒体网站开发河南郑州最新消息今天
  • 学校网站建设 效果淘宝店铺转让价格表
  • 酒店网站建设的构思网络优化seo是什么工作
  • 网站建设suteng推广策划方案模板
  • 杭州做网站公司哪家好百度快速优化推广
  • 厚街镇网站建设公司企业推广方式
  • 网站备案信息真实性核验单 如何填写商业软文案例
  • 购物网站制作样例想在百度做推广怎么做
  • 自己做网站要钱么广州网络营销推广公司
  • 自己放题库做测试网站临沂seo顾问
  • 网站制作怎么做网站优化排名阿里指数查询手机版
  • 一个好的网站建设沧州网站建设优化公司
  • 企业网站建设的必要性企业应该如何进行网站推广
  • 网站后台运营怎么做广州市口碑seo推广
  • 软件开发和网站开发难度百度下载官网
  • 晋江是哪个省的城市河南网站推广优化
  • 南宁做网站优化凡科建站后属于自己的网站吗
  • 沈阳高端做网站建设ip反查域名网站
  • 对网站建设提建议关键词优化排名第一
  • 无锡网站设计无锡网站建设东莞建设企业网站公司
  • 商城网站 搭建seo网站推广优化
  • 12306网站多少钱做的万网是什么网站
  • 四川营销型网站今日小说排行榜
  • 建设项目竣工环保验收公示网站网络营销方式有几种
  • 网站优化18600119496软件网站关键词优化
  • 防城港做网站seo与sem的区别与联系