0

我有以下代码:

while ((c = getopt(argc, argv, "i:o:")) != -1) {
    switch (c) {

    case 'i':
        inFile = strdup(optarg);
        break;
    case 'o':
        outFile = strdup(optarg);
        break;
    default:

        //usage(argv[0]);
        //error_usage(argv[0]);
        {
            fprintf(stderr, "usage: %s <-i input file> <-o output file>\n", argv[0]);
            exit(EXIT_FAILURE);

        }

    }
 }

它被馈送到这样运行的程序: ./program -i inFile -o outFile

但是测试我的程序的程序(不是我写的)给了我这个错误: Expected " + str(status) + " got " + str(child.returncode))

你知道我应该如何处理糟糕的论点而不是我上面所做的吗?请为我提供代码片段而不仅仅是文字,因为没有代码我很难弄清楚。

4

1 回答 1

0

这里的问题似乎出在测试程序上,而不是您的代码上;它没有传递正确的参数(或以错误的方式传递正确的参数),然后当您的程序告诉它错误时变得非常恼火。

将错误打印到 stderr 并返回 EXIT_FAILURE 被认为是处理错误参数的“正确”方式,否则如果您将一个程序的输出通过管道传输到另一个程序,如下所示:

ls --cookies! | sed 's/[.].*//'

并且 ls 假装没有出错,sed 将按预期处理使用信息而不是目录的内容。

于 2013-09-17T01:09:55.187 回答