带参数的main函数以及execl函数的应用

---恢复内容开始---

代码1:(带参main函数)

#include<stdio.h>
int main(int number, char *parameter[])
{
    int i = 0;
    printf("number is : %d \n", number);
    for(i=0; i<number; i++)
    {
        printf("parameter[%d] is : %s \n", i, parameter[i]);

    }
    if(number!=3)
        printf("not 3!!!\n");
}

运行:

[email protected]:~/xtbc$ gcc main.c
[email protected]-v-m:~/xtbc$ ./a.out
number is : 1
parameter[0] is : ./a.out
not 3!!!
[email protected]-v-m:~/xtbc$ ./a.out 2 3 4
number is : 4
parameter[0] is : ./a.out
parameter[1] is : 2
parameter[2] is : 3
parameter[3] is : 4
not 3!!!

代码2:excel函数:

#include<stdio.h>
#include<unistd.h>

int main()
{
    int ret;
    ret=execl("./main","main","2",NULL);

    if(ret<0)
        perror("execl");  printf("excel over\n");

}

运行程序:

[email protected]:~/xtbc$ gcc main.c -o ./main  //要先生成可执行的./main
[email protected]-v-m:~/xtbc$ gcc 33.c
[email protected]-v-m:~/xtbc$ ./a.out
number is : 2
parameter[0] is : main
parameter[1] is : 2
not 3!!!

在这种情况之下,不能够输出后面的“excle over”内容,无法得知进程是否完成,可以改进一下程序,利用fork()创建子进程:

#include<stdio.h>
#include<unistd.h>
#include<wait.h>
#include<stdlib.h>
int main()
{
    int ret;
    int pid;
    pid=fork();
    if(pid==0)
    {
        ret=execl("./main","main","2",NULL);

        if(ret<0)
        {
            perror("execl");

        }
        exit(0);
    }
    if(pid>0)
    {
        wait(NULL);
        printf("excel over\n");
    }
    return 0;
}

结果为:

[email protected]:~/xtbc$ ./a.out //已经存在./main
number is : 2
parameter[0] is : main
parameter[1] is : 2
not 3!!!
excel over

原文地址:https://www.cnblogs.com/it8343/p/9235841.html

时间: 2024-08-06 15:57:58

带参数的main函数以及execl函数的应用的相关文章

带参数的main函数

第一个带参数的main. #include <iostream.h> int main(int argc,char *argv[]) { for(inti=0;i<argc;i++) { cout<<argv[i]<<'\t'; // } return0; } /* int argc, char **argv 用于运行时,把命令行参数传入主程序. argc -- 命令行参数总个数,包括 可执行程序名. argv[i] -- 第 i 个参数. argv[0] --

python 第十二天2018.04.01 带参数的装饰器,,函数的有用信息

一.带参数的装饰器,函数的有用信息 def func1(): '''此函数的功能是完成的登陆的功能 return: 返回值是登陆成功与否(true,false) ''' print(333) func1() print(func1.__name__)#func1 print(func1.__doc__)#此函数的功能是完成的登陆的功能,return: 返回值是登陆成功与否 打印函数名 from functools import wraps def wrapper(f): @wraps(f) de

带参数的main函数的使用

以前接触的main函数都是不带参数的.因此main 后的括号都是空括号.  main() {   ...  } 实际上,main函数可以带参数,这个参数可以认为是main函数的形式参数. C语言规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv.因此,main函数的函数头可写为: main(argc,argv) C语言还规定argc(第一个形参)必须是整型变量,argv(第二个形参)必须是指向字符串的指针数组.加上形参说明后,main函数的函数头应写为: main (int

C语言学习011:带参数的main函数

直接上代码 1 #include <stdio.h> 2 3 int main(int argc,char *argv[]){ 4 printf("%i \n",argc); 5 int i; 6 for(i = 0; i < argc; i++){ 7 printf("%s\n",argv[i]); 8 } 9 10 return 0; 11 } 在上面的main方法中,第一个参数argc表示数组中的元素个数,第二个参数*argv表示参数数组,即

C语言带参数的main函数

#include<stdio.h> int main(int argc,char*argv[]) { int i; for(i=0;i<argc;i++) printf("%s\n",argv[i]); getchar(); getchar(); return 0; } 运行结果

C语言中带参数的宏

带参数的宏定义有如下的格式: [#define 指令----带参数的宏] #define 标识符(x1,x2,……,xn) 其中  x1,x2,……xn是标志符(宏的参数) 注意:在宏的名字和括号之间必修没有空格. 如果有空格,预处理会认为是在定义一个简单的宏,其中(x1,x2,……,xn)是替换列表的一部分 当预处理器遇到一个带参数的宏,会将定义存储起来以便以后使用.在后面的程序中,如果任何地方出现了标识符(y1,y2……,yn)格式的宏调用(其中y1,y2, ……yn是一些列标记),预处理器

execl函数 参数问题

函数定义: int execl(const char *path, const char *arg, ...); 该函数用户进程操作,linux下包含于头文件#include <unistd.h> 函数说明:path表示执行操作的文件路径,后面的不定参数列表为执行该文件时传递过去的参数,最后一个参数需要是NULL来结束. 一个经典例子: 1 #include<unistd.h> 2 main() 3 { 4 execl(“/bin/ls”,”ls”,”-al”,”/etc/pass

装饰器 装饰带参数的函数和添加函数

修饰带参数函数 1.带参数函数func1 def func1(arg): print arg 2.装饰器 def outer(fun): def wrapper(arg): print 'test' fun(arg) return wrapper 装饰器outer时期返回函数wrapper,由于要func1 带有参数,如需要将wrapper的函数带上参数,func1被装饰后重新定义为: func1(arg)=wrapper(arg)= { print 'test' func1(arg) } 在修

声明带参数的函数

总结:要完成一个动作,需要知道额外条件,就是参数声明函数时,参数必须包含数据类型和参数名在函数体中,可以将参数当做变量使用参数的作用域:仅在函数体中有效声明带参数的函数 参数在函数体中的应用 在函数体中,可以将参数当做已经声明的变量来使用参数的作用域:仅在函数体中有效 static void 函数名(参数列表){ //注释内容}参数列表书写方法:数据类型 参数名, 数据类型 参数名,---- 案例:输出两个整数相加的结果static void Add(int a,int b){ Console.