栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux-进程2

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux-进程2

1、课程目标
  • exec(熟练)
  • system(熟练)
  • 小结
2、进程-exec函数族
  • exec是一个函数族,包括6个函数。
    exec族作用

  • 进程可以调用exec函数族执行某个程序

  • 进程当前内容被指定的程序替换

  • 实现让父子进程执行不同的程序(父进程创建子进程子进程,调用exec函数族,父进程不受影响继续执行当前程序)

  • 其中在终端中就使用了exec,shell创建子进程执行某个程序,进行运行。

3、进程-execl/execlp
#include
int execl(const char *path,const char *arg,...);
int execlp(const char *file,const char *arg,...);
  • execl和execlp函数:执行一个指定的程序。
  • execl参数1执行程序的名称(包含路径),可以是绝对路径或者相对路径。
  • execlp参数1执行程序的名称(不包含路径),程序会从PATH环境变量路径中查找
  • execl和execlp参数2和后面可变参数是传入参数1程序的参数,其中参数2为参数1的程序名称,最后一个参数必须是空指针NULL。
  • int返回值:执行其他程序成功了则函数的返回值等都没有了,被调用的程序替换了,若失败了返回EOF(-1),需要对函数返回值进异常处理。
4、进程-execl/execlp-示例
if(execl("/bin/ls","ls","-a","-l","/etc",NULL) < 0)
{
    perror("execl");
}

if(execlp("ls","ls","-a","-l","/etc",NULL) < 0)
{
    perror("execlp");
}
5、进程-execv/execvp
#include
int execv(const char *path, char *const argv[]);
int execvp(const char *file,char *const argv[]);
  • execv/execvp和execl/execlp相比参数变少了,将后面的多个参数以数组参数形式传入。
  • 函数执行成功执行指定的程序,失败的时候返回EOF
  • arg…封装成指针数组的形式
6、进程-execv/execvp-示例
char *arg[] = {"ls","-a","-l","/etc",NULL}
if(execv("/bin/ls",arg) < 0)
{
    perror("execv");
}


char *arg[] = {"ls","-a","-l","/etc",NULL}
if(execvp("ls",arg) < 0)
{
    perror("execvp");
}
7、进程-system
#include
int system(const char *command);
  • system函数的入口参数,为字符的命令
  • 执行某个命令成功,返回命令的返回值;失败返回EOF
  • 当前进程使用system时等待command命令执行结束后才会继续执行。
  • system使用方式不用像execv/execvp/execl/execlp函数创建子进程。然后子进程执行命令程序。
8、进程小结
  • execl/execlp的使用
  • execv/execvp的使用
  • system的使用
  • 以上函数的区别。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/313109.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号