exec函数族

在进程中 启动另一个进程。

#include  <unistd.h>
extern char **environ;
int execl(const char *path, const char *arg, .../* (char *) NULL */);
int execlp(const char *file,cconst char *arg, ... /* (char *) NULL */);
int execle(const char *path, const char *arg, .../*, (char *) NULL, char * const envp[]*/);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
int execvpe(const char *file, char *const argv[], char *const envp[]);
int execve(const char *filename, char *const argv[], char *const envp[]);

函数中有l(list)表明使用列表方式传参,函数中有v(vector)表明使用指针数组传参。
函数中有p(path)表明 到系统环境中 找可执行性文件
函数中有e(evn) 表明exec可以使用环境变量值

execl(可执行文件位置,可执行文件名,可执行文件的选项,以NULL结尾);

一个进程调用exec后,除了进程ID,进程还保留了下列特征不变: 父进程号 进程组号 控制终端 根目录 当前工作目录 进程信号屏蔽集 未处理信号 ...

vfork和exec配合使用

#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>

int main(int argc,char const*argv[]){
    int num = 10;
    //vfork创建子进程
    pid_t pid = vfork();
    if (pid == 0) //子进程
    {
        //子进程负责启动起到程序
        sleep(3);
        execlp("ls", "ls", "‐a", "‐l", "‐h", NULL);
        //显示退出
        _exit(‐1);
    }
    else if (pid > 0) //父进程
     {
        //父进程运行自己的程序
        int i = 0;
        for (; i < 5; i++)
        {
            printf("父进程%d中的i=%d\n", getpid(), i);
            sleep(1);
        }
    }
    return 0;
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • fork()函数通过系统调用创建一个与原来进程(父进程)几乎完全相同的进程(子进程是父进程的副本,它将获得父进程数...
    饭饭H阅读 1,177评论 0赞 0
  • fork函数用于创建一个子进程,创建出来的子进程几乎是父进程的副本。有时候,我们希望子进程去执行另外的程序,exe...
    JunChow520阅读 2,261评论 0赞 4
  • 引出 我们学习了进程,是为了去用多进程,那么,为什么需要用到多进程呢? 1:为了提高效率,支持大用户量的并发。 2...
    小鼻子球球小昏昏阅读 460评论 0赞 0
  • 进程的控制 什么是进程? 狭义上来说:进程是操作系统上运行的一个程序。 广义上来说:进程是一个具有一定独立功能的程...
    快扶我起来搬砖阅读 359评论 0赞 1
  • 一、引言 对于没有接触过Unix/Linux操作系统的人来说,fork是最难理解的概念之一:它执行一次却返回两个值...
    寻小五阅读 560评论 0赞 0

友情链接更多精彩内容