系统编程-系统函数
//能调用文件外的命令/程序的函数,称之为系统函数
//主要是system()和exec函数族
system()
//<stdlib.h>
*int system(const char command)
//例:前台执行:system("./a.out")
//例:后台执行:system("./a.out &")
特点:
执行不影响后续代码运行
用途:
- 执行shell命令//linux给我们的可执行程序
- 执行我们的程序//注意影响
exec函数族
//能使用其一并理解,即可
execl(char *path,char *arg, ...)
//exec//l->列表形式列举
//path:执行文件路径//arg:命令列表
system("ls -l");//可以连写
execl("/bin/ls","ls","-l",NULL(结束标记));//以列表形式列举
execl("/bin/ls","ls -l"(错误),NULL);//不能连写
execlp(char *file,char *arg, ...)
//p->环境变量自动填充
//file:执行文件名
execlp("ls","ls","-l",NULL);
execle(char *path,char *arg, ...,char *envp[])
//e->给目标文件设定指定环境变量
//char *envp[]//环境变量指针数组
char *evp[]={"PATH=/home/gec","PATH=/etc/profile",NULL(也要写NULL)};
execl("/bin/ls","ls","-l",NULL,evp);
execv(char *path,char *const argv[])
//v->命令使用指针数组存放
char *arg[]={"ls","-l",NULL(注意)};
execv("/bin/ls",arg);
execvp(char *file,char *const argv[])
execvpe(char *file,char *const argv[],char *const envp[])
exec + l p e v
exec -> 同函数族
l -> 列表形式逐一列举(列举写入)
p -> 从系统环境变量中查找,要执行的shell命令或程序(提前给了环境变量的路径)
e -> 执行时,自动设置环境变量(调用执行进程的环境变量)
v -> 参数使用指针数组存放
相同与区别/注意事项
两者相同:都是帮助调用命令,调用程序
两者区别:system后面继续运行,exec后面不运行
注意事项:
- exec族使用了...,用NULL作为结束标志(注意在命令末尾加上NULL)
- exec族运行后,会结束后边的代码(相当于退出)