带参数的main函数以及execl函数的应用
Posted it8343
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带参数的main函数以及execl函数的应用相关的知识,希望对你有一定的参考价值。
---恢复内容开始---
代码1:(带参main函数)
#include<stdio.h>
int main(int number, char *parameter[])
{
int i = 0;
printf("number is : %d
", number);
for(i=0; i<number; i++)
{
printf("parameter[%d] is : %s
", i, parameter[i]);
}
if(number!=3)
printf("not 3!!!
");
}
运行:
[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
");
}
运行程序:
[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
");
}
return 0;
}
结果为:
[email protected]:~/xtbc$ ./a.out //已经存在./main number is : 2 parameter[0] is : main parameter[1] is : 2 not 3!!! excel over
以上是关于带参数的main函数以及execl函数的应用的主要内容,如果未能解决你的问题,请参考以下文章