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

广告在什么网站做/有趣的软文

广告在什么网站做,有趣的软文,电商眼,央视新闻摘要:本文主要讲述如何在进程中运行新代码,以及exec系列函数的基本使用方法. 在进程中运行新代码 用函数fork创建子进程后,如果希望在当前子进程中运行新的程序,可以调用exec函数执行另一个程序.当进程调用exec函数时&#xff0…
摘要:本文主要讲述如何在进程中运行新代码,以及exec系列函数的基本使用方法.

在进程中运行新代码

    用函数fork创建子进程后,如果希望在当前子进程中运行新的程序,可以调用exec函数执行另一个程序.当进程调用exec函数时,该进程用户空间资源(正文、数据、堆和栈)完全由新程序替代,新程序则从main函数开始执行.因为调用exec函数并没有创建新的进程,所以前后的进程ID并没有改变,也即内核信息基本不做修改.
    exec系列函数共有7函数可供使用,这些函数的区别在于:指示新程序的位置是使用路径还是文件名,如果是使用文件名,则在系统的PATH环境变量所描述的路径中搜索该程序;在使用参数时使用参数列表的方式还是使用argv[]数组的方式.

1.exec系列函数

函数定义:
    #include <unistd.h>
    int execl(const char *pathname, const char *arg0, ... /* (char *)0 */ );
    int execv(const char *pathname, char *const argv[]);
    int execle(const char *pathname, const char *arg0, .../* (char *)0, char *const envp[] */ );
    int execve(const char *pathname, char *const argv[], char *const envp[]);
    int execlp(const char *filename, const char *arg0, ... /* (char *)0 */ );
    int execvp(const char *filename, char *const argv[]);
    int fexecve(int fd, char *const argv[], char *const envp[]);
返回值:如果执行成功将不返回,否则返回-1,失败代码存储在errno中.
    前4个函数取路径名作为参数,后两个是取文件名作为参数,最后一个是以一个文件描述符作为参数.

2.函数具体分析

    当指定filename作为参数时:
1)如果filename中包含/,则将其视为路径名.
2)否则就按PATH环境变量,在它所指的各目录搜寻可执行文件.

2.1 execl()函数

int execl(const char *pathname, const char *arg0, ... /* (char *)0 */ );
    execl()函数用来执行参数path字符串所指向的程序,第二个及以后的参数代表执行文件时传递的参数列表,最后一个参数必须是空指针以标志参数列表为空.
例子1:演示exec()函数的基本使用.
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>
int main()
{pid_t pid;pid = fork();if(pid<0){printf("error fork:%m\n");exit(-1);}else if(pid==0){//execl("/bin/ls","ls","-l","/etc",(char *)0);}else{printf("parent process\n");}return 0;
}

输出:

 

2.2 execle()函数

int execle(const char *pathname, const char *arg0, .../* (char *)0, char *const envp[] */ );
    execle()函数用来执行参数path字符串所指向的程序,第二个及以后的参数代表执行文件时传递的参数列表,最后一个参数必须指向一个新的环境变量数组,即新执行程序的环境变量.
例子2:
#include <unistd.h>
int main(int argc, char *argv[], char *env[])
{execle("/bin/ls","ls","-l", "/etc",(char *)0,env);return 0;
}

输出:

 

2.3 execlp()函数

int execlp(const char *filename, const char *arg0, ... /* (char *)0 */ );
    execlp()函数会从PATH环境变量所指的目录中查找文件名为第一个参数指示的字符串,找到后执行该文件,第二个及以后的参数代表执行文件时传递的参数列表,最后一个参数必须是空指针.
例子3:
#include <unistd.h>int main()
{execlp("ls", "ls", "-l", "/etc", (char *)0);return 0;
}

输出:

 

2.4 execv()函数

int execv(const char *path, char *const argv[]);
    execv()函数函数用来执行参数path字符串所指向的程序,第二个为数组指针维护的程序参数列表,该数组的最后一个成员必须是空指针.
例子4:
#include <unistd.h>int main()
{char *argv[] = {"ls", "-l", "/etc", (char *)0};execv("/bin/ls", argv);return 0;
}

输出:

 

2.5 execvp()函数

int execvp(const char *file, char *const argv[]);
   execvp()函数会从PATH环境变量所指的目录中查找文件名为第一个参数指示的字符串,找到后执行该文件,第二个及以后的参数代表执行文件时传递的参数列表,最后一个成员必须是空指针.
例子5:
#include <unistd.h>int main()
{char *argv[] = {"ls", "-l", "/etc", (char *)0};execvp("ls", argv);return 0;
}

输出:

 
    几个函数之间非常相似,没有找到更好的方法记忆,通过简单的例子暂时了解一下它们之间的不同调用方式.字母联想也不靠谱:
    字母p表示该函数取filename作为参数,并且用PATH环境变量寻找可执行文件.
    字母l表示该函数取一个参数表,它与字母v互斥.
    字母v表示该函数取一个argv[]矢量.
    字母e表示该函数取envp[]数组.

待续......

笔者:个人能力有限,只是学习参考...读者若发现文中错误,敬请提出.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------勿在浮沙筑高台,静下心来,慢慢地沉淀---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
http://www.lbrq.cn/news/1551421.html

相关文章:

  • 谁做的怀来吧网站/营销网站系统
  • 山东做网站找谁/今日疫情最新消息
  • wordpress插件怎么安/seo的搜索排名影响因素有
  • 再网站里做商家店铺/seo软件推广哪个好
  • 网站目录结构说明/个人网站模板建站
  • 建设部招投标网站/太原竞价托管公司推荐
  • 中山网站建设优化/小程序平台
  • 网站上的图片做多大/提高工作效率的软件
  • 企业网站建设的必要性/河南靠谱seo地址
  • 广东网站建设报价官网/电商运营
  • 有很多长尾怎么做网站内容/舆情危机公关公司
  • 设计类的网站/网络推广项目代理
  • jsp动态网站开发与实例/百度一下百度首页官网
  • 模板网站建设教程视频教程/免费seo网站诊断免费
  • axure做网站简单吗/做关键词推广
  • 网站后期维护需要注意什么/谷歌浏览器下载安装(手机安卓版)
  • 新疆建设云网站成绩查询/今日全国疫情最新消息
  • 上海特种作业操作证查询/如何优化网站推广
  • dw cs4怎么做网站/山西网页制作
  • 动态型网站建设哪里便宜/北京seoqq群
  • 企业网站建/seo工资
  • 网站开发进度设计/优化网站找哪家
  • python做博客网站/淘宝店铺转让价格表
  • 泰安信息港房产网/福州seo按天付费
  • 瀑布式网站/广告搜索引擎
  • 专业展示设计网站/it培训课程
  • 网站建设方案书 个人/企业网站怎么优化
  • 大连网站运营/专门制作小程序的公司
  • 手机娱乐网站制作/百中搜优化软件
  • 党校网站建设整改/深圳营销推广引流公司
  • MCP协议演进:从SSE到Streamable HTTP的技术革命
  • 【165页PPT】基于IPD的研发项目管理(附下载方式)
  • 一起Oracle 19c bug 导致的业务系统超时问题分析
  • Honor of Kings 101star (S40) 2025.08.17
  • 安卓11 12系统修改定制化_____修改系统默认域名解析规则 实现屏蔽广告 屏蔽应用更新等功能
  • Pycaita二次开发基础代码解析:交互选择、参数化建模与球体创建的工业级实现