C程序中内核是如何调用main函数的

C程序总是从mian函数开始执行的。mian函数的原型是:

int main(int argc,char *argv[]);

其中argc是命令行参数的个数,argv是命令行各个参数的指针,传入的参数类型是char字符串。

当内核执行C程序时 ,在调用main前,调用一个特殊的启动例程,可执行文件将此启动例程指定为程序的起始地址,这是由连接编辑器决定,而连接编辑器是由C编译器调用。启动例程从内核取得命令行参数和环境变量,然后按上述方式为调用main函数作出安排。

下面举个例子说明如何使用main函数的输入参数。

#include<stdio.h>
#include<stdlib.h>

int num;

int main(int argc,char argv[])
{
    for(int i = 0; i < argc ;i++)
    {
        printf("argv[%d]:%s\r\n",i,argv[i]);
    }
    return 1;
} 

编译此程序 ,并在shell中运行。此处将源文件命名为main.c.且编译生成的 执行文件为main.

执行程序:
./main  data1  data2 data3
输出:
argv[0] :./main
argv[1] :data1
argv[2] :data2
argv[2] :data3

可以看出argv[0]为执行 程序的命令./main.

假如想将输入的数值转换为数值类型变量,比如
./main 1234

可调用stdlib头文件中的atoi函数

num =  atoi(argv[1]); //num = 1234;

函数名称: atoi
函数原型: int atoi(char *str)
函数功能: 将字符串转换成一个整数值
函数返回: 转换后的数值
参数说明: str-待转换为整型数的字符串

ISOC 和POSX都要求argv[argc]为一个空指针,因此可将上述处理参数的循环更改为;
for (i = 0;*argv != null,i++)
{

}

利用函数的该特性,便可以实现各个命令的编写。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值