当我做类似的事情
$ ./my-program foo bar
foo
和bar
如何从外壳传递到my-program
的存储空间? my-program
是否通过系统调用获取它们?复制它们是内核的工作吗?
(请注意,我知道如何读取和使用命令行参数。这不是我的问题。)
答案 0 :(得分:4)
这是特定于操作系统的,但在GNU / Linux上:
execve(2)
并将指针传递给这些参数的NULL终止数组。_start
符号开始调度进程main
方法。argv
指针从其自身的存储空间访问参数。