首页 > 系统服务 > 详细

Linux 进程创建二(execve)

时间:2016-08-28 09:48:07      阅读:356      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!