zoukankan      html  css  js  c++  java
  • execl()

    execl()函数声明如下:
    extern int execl(_const char *_path,const char *_argv[],...,NULL)
    简单解释:函数execl()返回值定义为整形,如果执行成功将不返回!执行失败返回-1。
                      参数列表中char *_path为所要执行的文件的绝对路径,从第二个参数argv开始为执行新的文件所需的参数,最后一个参数必须是控指针(我为了简便用NULL代替)。
    举个例子:
    一 先来个新程序不带参数的简单例子:
    //execl.c
    #include<stdio.h>
    #include<unistd.h>
    int main(int argc,char *argv[])
    {
        int test;
       if((test=execl("/home/crosslandy/Linux/exec/hello",argv[1],NULL))==-1)
            printf("error\n");
        return 0;
    }
    //hello.c
    #include<stdio.h>
    int main(int argc,char *argv[])
    {
        int i;
        printf("hello world\n");
        for(i=0;i<argc;i++)
        {
            printf("parameter %d is:%s\n",i,argv[i]);
        }
        return 0;
    }
    解释一下:
    execl.c文件:
     1定义的整形test用来判断execl是否执行成功,如果失败返回-1输出error;
    2第一个参数"/home/crosslandy/Linux/exec/hello"为我所要执行的文件的绝对路径(记住在绝对路径后要写上所要执行的文件的文件名);
    3第二个参数为所要执行的新文件的第一个参数,本例子即为./hello
    4第三个参数为空指针(因为hello这个程序不需要参数所以直接写最后一个参数空指针);  
    hello.c文件:
     地球人都知道的hello world。只不过在后面我加上了执行该文件是在终端所输入的参数argv[]并对其进行输出。
     在终端执行的时候结果如下:
    [crosslandy@localhost exec]$ ./execl ./hello 
    hello world
    parameter 0 is:./hello
    二 再来个带参数的例子:
    //execl.c
    #include<stdio.h>
    #include<unistd.h>
    int main(int argc,char *argv[])
    {
        int test;
        if((test=execl("/home/crosslandy/Linux/exec/hello",argv[1],argv[2],NULL))==-1)
            printf("error\n");
        return 0;
    }
    //hello.c
    #include<stdio.h>
    int main(int argc,char *argv[])
    {
        int i;
        printf("hello world\n");
        for(i=0;i<argc;i++)
        {
            printf("parameter %d is:%s\n",i,argv[i]);
        }
        return 0;
    }
    解释一下:
    新的例子里我只对execl.c进行了小修改即红色部分argv[2],表示在调用execl函数执行新文件时多添加了一个参数。
     在终端执行的时候结果如下:
    [crosslandy@localhost exec]$ ./execl ./hello first_parameter
    hello world
    parameter 0 is:./hello
    parameter 1 is:first_parameter
  • 相关阅读:
    Python 之pymysql数据库模块
    Python 之sqlite3数据库模块
    Python 之操作sqlite3
    Python 之requests网络请求模块
    Python 之os文件目录模块
    Python 之json模块
    Python 之random随机数模块
    vue.js三种安装方式
    VUE学习之计算属性computed
    vue添加背景音乐
  • 原文地址:https://www.cnblogs.com/robbychan/p/3786699.html
Copyright © 2011-2022 走看看