码迷,mamicode.com
首页 > 系统相关 > 详细

Linux 进程创建二(execve)

时间:2016-08-28 09:49:34      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:

三:execve系统调用
int execve(const char *filename, char *const argv[],char *const envp[]);
fork创建了一个新的进程,产生一个新的PID
execve用被执行的程序完全替换了调用进程的映像。
execve启动一个新程序,替换原有进程,所以被执行进程的PID不会改变。
execve函数接受三个参数
--path    要执行的文件完整路径
--argv    传递给程序完成参数列表,包括argv[0],它一般是执行程序的名字,最后一个参数一般是NULL
--envp    是指向执行execed程序的环境指针,一般设为NULL

 

//execve函数的定义
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>

int main(int arg, char * args[])
{
    /*
      第一个参数是程序的名字,第二个参数是被调用程序的参数,最后一个参数必须是NULL
      这个跟main函数的参数args数组很相似
     */
    char * argv[]={"/bin/ls","-l",NULL};
    execve("/bin/ls",argv,NULL);
    /*
     execve函数是替换原来的程序代码,但是进程PID不会变,文件描述符不会变,只是程序代码被替换了
     所以execve函数后面的语句都不会被执行
     */
    printf("program is end!\n");
    return 0;
}

 

Linux 进程创建二(execve)

标签:

原文地址:http://www.cnblogs.com/zhanggaofeng/p/5814347.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!