为另一个程序提供带有选项的程序名称

问题描述

我有一个程序,我向它传递一个强制参数,它是另一个程序的名称,在它之前有两个可能的选项(假设一个称为 -v,第二个称为 -a,它们的功能并不重要) .我需要做的是为第二个程序提供额外的选项。这些是程序在终端中的可能执行:

./program -a 测试

./program -v 测试

./program -v -a 测试

./程序测试

但我也想运行这个:

./program [上面的任何选项] required_argument [参数启动选项]

直接例子:

./program -v -a second_program -g -foo

有没有办法以某种方式区分最后两个选项作为 second_program 的选项?我试过使用 optind,但不幸的是只有“second_program”被识别。目前我的代码如下所示:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <ctype.h>

int main(int argc,char **argv)
{
    int vflag = 0;
    int aflag = 0;
    int c;

    while ((c = getopt(argc,argv,"va:")) != -1)
        switch(c)
        {
            case 'v':
                vflag = 1;
                break;

            case 'a':
                aflag = 1;
                break;

            default:
                break;
        }

    if(argv[optind] == NULL) {
        printf("Missing mandatory argument\n");
        return -1;
    }

    for (int i = optind; i < argc; i++)
        printf("Non-option argument %s\n",argv[i]);
    return 0;
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)