C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了C如何将命令行参数转换为数组?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想C实际上如何将命令行参数转换为char数组?什么“秘密”代码这样做?我在哪里可以查看执行此操作的代码(即使它在汇编中,我知道一些汇编)?我正在使用 Linux,如果这有帮助的话.

谢谢

解决方法

管理命令行参数并在进程创建期间将其放入堆栈是一项操作系统工作.

对于POSIX系统,执行路径是:

>在程序中调用execle / execve / …系统调用,将路径传递给新的进程可执行文件和命令行参数.
>这些数据转到内核
>内核更新其内部结构以考虑新的进程标识,并为新进程分配地址空间(如果不再需要,内核也会清除旧的地址空间).内核用零初始化进程内存,将信息从旧内存复制到堆栈顶部的新地址空间.
>内核将新进程放入调度队列并从exec()系统调用返回,将执行路径传递到用户空间并最终传递到进程的入口点(这通常是来自crt0.o对象文件的例程,这是认情况下链接到每个可执行文件 – 此例程调用main()).

对于Linux,您可以在此处查看此代码
http://www.cs.fsu.edu/~baker/devices/lxr/http/source/linux/fs/exec.c#L383

383 /*
384  * 'copy_strings()' copies argument/environment strings from the old
385  * processes's memory to the new process's stack.  The call to get_user_pages()
386  * ensures the destination page is created and not swapped out.
387  */

用户空间execve()系统调用的do_execve()内核对应部分,在第1345行,调用copy_strings(),copy_strings()例程实际上完成了你所询问的工作.

大佬总结

以上是大佬教程为你收集整理的C如何将命令行参数转换为数组?全部内容,希望文章能够帮你解决C如何将命令行参数转换为数组?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: