【linux】环境变量(进程二)-命令行参数:

时间:2024-03-20 22:44:29

不谈命令行参数就谈环境变量就是耍流氓。

相信我们在C语言阶段都在main函数里见过参数。
例如int main(int argc, char* argv[])
这是什么东西呢?
话不多说我们直接打印一下看看:
在这里插入图片描述
现象:
在这里插入图片描述
到此为止我们发现argv这个数组存放着一个个指针,这些指针指向我们传入的参数。


再来看这样一段代码:
在这里插入图片描述
现象:
在这里插入图片描述

那么现在就产生两个问题:

  1. 为什么要有这中功能的存在?
  2. 谁传给我们的?

先回答第一个:
我们先来看这样一个命令:
在这里插入图片描述

是不是与我们刚刚进行的操作一样!!

没错,命令行参数的本质就是交给我们程序不同的选项。用来指定不同的程序功能!!


再来看第二个问题:

先说答案:是bash。
那么他是如何给我们的呢?

先来看这样一段代码:
在这里插入图片描述

现象:
在这里插入图片描述
由此可以验证子进程是可以拿到父进程的代码和数据的。

那我们父进程的父进程的谁呢,也就是父进程的ppid
在这里插入图片描述
就是bash,所以我们运行的二进制可执行文件就是bash的子进程,linux中大约70多的命令都是bash子进程。

那我们将二进制文件名与所带的选项给bash,bash的子进程也理所应当的可以拿到这些数据。在这里插入图片描述