Linux操作系统——启动进程:exec族

exec在Linux中指的是一组函数,一共是六个,分别是

  1. int execl(const char *path,const char *arg,…)
  2. int execlp(const char *path,const char *arg,…)
  3. int execle(const char *path,const char *arg,…,char const *envp[])
  4. int excev(const char *path,char *const argv[])
  5. int execvp(const char *path,char *const argv[])
  6. int execve(const char *path,char *const argv[],char *const argv[])
    其中只有execve才是真正意义上的系统调用,其他都是在此基础上包装的库函数
    下面对这几个函数进行说明

execl函数

execl函数用于执行文件

表头文件#include<unisth.h>
定义函数int execl(const char *path,const char *arg…
函数说明execl()用来执行参数path字符串所带便的文件路径,接下来的参数代表执行该文件时传递过去的argv[0],argv[1]…,最后一个参数必须用空指针NULL作结束
返回值如果执行成功不会反悔,失败返回-1失败原因存于error中

execlp函数

execlp用于从PATH环境变量中查找文件并执行

表头文件#include<unistd.h>
定义函数int execlp(const char *path,const char *arg,…)
函数说明execlp()会从PATH环境变量所指的目录中查找符合 参数file的文件名,找到后执行改文件,然后将第二个以后的参数当做改文件的argv[0], argv[1]…,最后一个参数必须用空指针NULL作结束
返回值如果执行成功则函数不会返回,执行失败则直接返回-1,失败原因存于error中

execve函数

表头文件#include<unistd.h>
定义函数3. int execle(const char *path,const char *arg,…,char const *envp[])
函数说明execve()用来执行参数pathname字符串所代表的文件路径,第二个参数系列利用数组指针来传递给执行文件,最后一个参数则为传递给执行文件的新环境变量数组
返回值如果执行成功则函数不会返回,执行失败返回-1,失败原因存于error中

execvp函数

execvp函数用于执行文件

表头文件#include<unistd.h>
定义函数int execvp(const char *path,char *const argv[])
函数说明execvp()会从PATH环境变量所指的目录中查找符合参数file的文件名,找到后便执行改文件,然后将第二个参数argv传给欲执行的文件
返回值如果执行成功则函数不返回,失败则返回-1,错误存于error中

启动进程:system

system函数用于执行shell命令

表头文件#include<stdlib.h>
定义函数int system(const char*string)
函数说明system会调用fork产生的子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,由命令执行完后随即返回原调用的进程,在调用system()期间SIGCLD信号会被暂时搁置,SIGINT和SIGQUIT信号被忽略
返回值如果system在调用/bin/sh时失败则返回127,其他原因失败返回-1,若参数string为空指针,则返回非零值。如果system调用成功则最后会返回执行shell命令的返回值,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值