当我使用CreateProcess
从另一个进程启动进程时,我无法获得使用getopt()
时提供的第一个参数。
答案 0 :(得分:0)
刚刚发现了它。 getopt()将第一个命令解析为应用程序名称。当使用CreateProcess()从另一个进程启动进程时,子进程中收到的第一个参数不是应用程序名称,而是给它的第一个命令。 来自终端的普通案例: .app arg1 arg2。在这种情况下,argv [0]是app,argv [1]是arg1 ....
从使用CreateProcess()的进程开始: 应用程序名称和参数分别提供给函数CreateProcess()。 假设参数字符串是“arg1 arg2”,尝试访问argv [0]会给出除应用程序名称之外的arg1。在使用getopt()解析选项后,尝试获取第一个参数(argv [optind]),我们得到了arg2。这指出getopt()忽略了第一个参数,因为它通常是应用程序名称。为了能够获得第一个命令,在实际参数之前添加任何愚蠢的参数。 例如参数字符串:“stupid arg1 arg2”。这样getopt()很容易认为stupid是应用程序名称。