一起talk C栗子吧(第一百二十七回:C语言实例--查看main函数的参数)


各位看官们,大家好,上一回中咱们说的是static关键字的例子,这一回咱们说的例子是:查看main函数的参数。闲话休提,言归正转。让我们一起talk C栗子吧!

看官们,我们在第五十七回中介绍过main函数的参数,如果有看官忘记的话,可以点击这里查看以前的内容。在以前的内容中,我们介绍的是在程序中直接操作main函数的参数。也就是直接操作argv和argc。这种方法需要提前在代码中编写相关的内容来操作argv和argc。如果我们想在程序运行时查看main函数的参数,怎么办呢?有看官说,可以再代码中添加操作argv和argc的内容。这个时候再返回代码中编写操作argv和argc的代码就有点晚了,我们还需要重新编译代码,把大把的时间白白浪费在了等待程序编译上,真是太可惜了。台下已经有看官在摇头叹气呢。看官莫要灰心,我们今天来介绍另外一种查看main函数参数的方法,通过该方法可以在程序运行时查看程序中main函数的参数。

Linux中有一个特殊的文件系统叫作:proc。该文件系统中存放关Linux系统相关的信息。今天我们只介绍其中的一种信息,那就是进程的命令行参数,也就是我们要介绍的main函数的参数。接下来我们通过例子来说明如何查看进程的命令行参数,也就是我们要介绍的main函数的参数。

#include <stdio.h>

int main(int argc, char *argv[])
{
    int i = 0;

    while(i++ < argc*3)
        sleep(1);

    return 0;
}

我们写一些简单的代码,代码中使用sleep函数让程序暂时一段时间,该时间等于程序的参数个数乘以三,单位为秒。我们把上面的代码保存到一个文件中,然后使用gcc编译该文件,并且生成名为s的可执行文件。

我们在终端中运行该程序,具体的命令如下:

./s -a -b &                  //在后台运行该程序,并且传递给程序两个参数:-a和-b
[1] 3231                     //程序在后台运行中,同时终端中显示该程序的进程ID
cat /proc/3231/cmdline       //使用cat命令查看进程的命令行参数
./s-a-b                      //终端中显示也进程的命令行参数,这里省略了终端的提示信息
[1]+  Done                    ./s -a -b //程序在后台运行完成

从上面的运行结果中可以看到,我们在终端中通过cat命令可以直接查看进程的命令行参数,也就是该进程中main函数的参数:-a -b。该参数正是我们在运行程序时传递给程序的参数。

“ /proc/3231/cmdline”是什么意思哟?这时有看官在提问了,看官莫急,我们刚才说了proc是一种特殊的文件系统,而该文件系统中有很多目录,这些目录中有一部分目录名称是数字,这些以数字为目录名的目录中包含有进程相关的信息,而目录名就是进程的PID。在该类型的目录中有一个叫cmdline的文件,该文件中的内容就是进程的命令行参数,也就是main函数的参数。我们在上面的例子中运行命令:cat /proc/3231/cmdline其意思就是查看PID为3231进程的命令行参数。

看官们,该方法可以在程序运行或者调试程序的过程中直接查看main函数的参数。这样就不需要我们提前在代码中编写操作argv和argc的内容了,而且可以节省重新编译程序的时间,真是一举两得呀!

各位看官,关于查看main函数参数的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解 。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值