打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Linux c编程 exec execl

Linux c编程 exec execl  

2011-09-27 16:38:50|  分类: Linux学习心得 |  标签:linux  execl   |举报 |字号 订阅

今天新学的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
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Linux系统编程——vfork() 函数详解
Sqlite3小结(小型数据库中增删改查的操作)
C++操作SQLite简明教程
linux下c编程main函数的参数问题
linux解释器原理
C语言代码集合一
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服