栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

exec函数族

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

exec函数族

文章目录
  • execl
  • execlp
  • execv
  • execve

  exec启动一个新程序,替换原有的进程,而进程的PID不会被改变。

execl

  函数原型如下:

#include 
int execl ( const char *path, const char *arg1, ... );
  • path是被执行程序名,包含完整路径。
  • arg1至argn是被执行程序所需的命令行参数,以NULL结束。
#include "sys/types.h"
#include "sys/wait.h"
#include "unistd.h"
#include "stdio.h"
#include "stdlib.h"

int main() {
    pid_t pid;
    pid = vfork();

    if ( pid > 0 ) {
        wait ( NULL );
        printf ( "This is father processn" );
        exit ( 0 );
    } else {
        execl ( "/bin/ls", "ls", "-al", "./", NULL );
        printf ( "This is child processn" );
        exit ( 0 );
    }
}
execlp

  函数原型如下:

#include 
int execlp ( const char *path, const char *arg1, ... );
  • path是被执行程序名,不含路径,将从环境变量PATH中查找该程序。
  • arg1至argn是被执行程序所需的命令行参数,以NULL结束。
#include 

int main() {
    execlp ( "ls", "ls", "-al", "/etc/passwd", ( char * ) 0 );
}
execv

  函数原型如下:

#include 
int execv ( const char *path, char *const argv[] );
  • path是被执行程序名,含完整路径。
  • argv是被执行程序所需的命令行参数数组。
#include 

int main() {
    char *argv[] = { ( char * ) "ls", ( char * ) "-al", ( char * ) "/etc/passwd", NULL};
    execv ( "/bin/ls", argv );
}
execve

  函数原型如下:

#include 
int execve ( const char *filename, char *const argv[], char *const envp[] );

execve常用于调用外部程序。
  new.c如下:

#include "stdio.h"

int main ( void ) {
    printf ( "welcome to here!n" );
    return 0;
}

  exec.c如下:

#include "stdio.h"
#include "unistd.h"

extern char **environ;

int main ( int argc, char *argv[] ) {
    execve ( "./new", argv, environ );
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/288846.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号