linux中,可以使用exec函数族将程序载入内存,实现多个程序的运行。
man 3 exec
exec函数族参数
– “l”和“v”表示参数是以列表还是以数组的方式提供的
– “p”表示这个函数的第一个参数是*path,就是以绝对路径来提供程序的
路径,也可以以当前目录作为目标
– “e”表示为程序提供新的环境变量
简单地使用一下 execl()
int execl(const char *path, const char *arg, ...);
参数1 启动文件的路径
参数2,3,4..... 对应启动文件的 argv[0],argv[1],argv[2].....
末尾的参数要加上 NULL
/* execl.c */
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char**argv)
{
if(execl("/mnt/udisk/learn/execl_Hello","xxxx","execl",NULL) == -1)
{
perror("execl");
exit(1);
}
printf("execl error!\n");
return 0;
}
/* execl_hello.c */
#include <stdio.h>
int main(int argc, char**argv)
{
printf("%s\n",argv[0]); //打印出 xxxx
printf("Hello! This is %s",argv[1]); //打印出 execl
return 0;
}
execl() 成功执行后,直接跳转到另外的程序,不会执行下面的语句
在开发板上运行效果