开发者社区> 问答> 正文

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

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

展开
收起
a123456678 2016-06-08 20:06:24 2635 0
1 条回答
写回答
取消 提交回答
  • 首先你得知道进程的创建。
    以 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 中,打开任务管理器,选取显示命令行参数,有很多系统进程是没有命令行参数的。

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

    2019-07-17 19:32:39
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载