”argv的第一个元素指向一个空字符串“是什么意思?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

”argv的第一个元素指向一个空字符串“是什么意思?

a123456678 2016-06-08 20:06:24 1102

当实参传给main函数之后,argv的第一个元素指向程序的名字或者一个空字符串
前半句话我知道,主要是后半句话,argv[0]='0',这算啥?

分享到
取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 19:32:39

    首先你得知道进程的创建。
    以 Windows 平台为例,标准是通过 CreateProcess 创建
    CreateProcess MSDN: https://msdn.microsoft.com/zh-cn/library/ms682425(v=vs.85).aspx

    BOOL WINAPI CreateProcess(
    In_opt LPCTSTR lpApplicationName,
    Inout_opt LPTSTR lpCommandLine,
    In_opt LPSECURITY_ATTRIBUTES lpProcessAttributes,
    In_opt LPSECURITY_ATTRIBUTES lpThreadAttributes,
    In BOOL bInheritHandles,
    In DWORD dwCreationFlags,
    In_opt LPVOID lpEnvironment,
    In_opt LPCTSTR lpCurrentDirectory,
    In LPSTARTUPINFO lpStartupInfo,
    Out LPPROCESS_INFORMATION lpProcessInformation
    );
    第一个参数是程序的绝对路径,第二个是命令行参数,如果第一个参数存在,而第二个为空,那么就出现 argv 为空了。

    而 Linux 下,内部实现也主要是

    int execle(const char path, const char arg , ..., char * const envp[]);
    也就是 arg 为空了。
    在 Windows 中,打开任务管理器,选取显示命令行参数,有很多系统进程是没有命令行参数的。

    大多数情况下,至少有一个命令行参数是它本身。

    0 0
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章