你想要的进程知识——进程替换

进程替换

一、什么是进程替换

创建一个进程后,pid 以及在内核中的信息保持 保持不变,但进程所执行的代码进行替换

作用 : 通过一个进程启动另外一个进程

应用场景:

c++程序 进程替换启动python.exe

二、exec函数家族

在 Linux 系统中提供了一组用于进程替换的替换,共有6个函数

函数原型

int execl(const char *pathname, const char arg, … / (char *) NULL */);

​ int execlp(const char *file, const char arg, … / (char *) NULL */);

int execle(const char *pathname, const char arg, … /, (char *) NULL, char *const envp[] */);

int execv(const char *pathname, char *const argv[]);

int execvp(const char *file, char *const argv[]);

int execvpe(const char *file, char *const argv[], char *const envp[]);

#include 
#include 
#include 

int main(void){
    int ret = 0;
    // ret = execl("/bin/ls", "ls", "-l", NULL);
    ret = execl("/bin/ls", "ls",  NULL);
    if (ret == -1) {
        perror("[ERROR] execl():");
        exit(EXIT_FAILURE);
    }
    printf("process end!\n");

    return 0;
}

+v是指输入参数加到一个数组里

#include 
#include 
#include 

int main(void){
    int ret = 0;
    char *const argv[] = {"ls", "-l", NULL};
    // ret = execv("./app", argv);
    ret = execvp("./app", argv);
    if (ret == -1) {
        perror("[ERROR] execl():");
        exit(EXIT_FAILURE);
    }
    return 0;
}

你可能感兴趣的:(Linux,嵌入式开发)