首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印到stderr未到达stderr

打印到stderr未到达stderr
EN

Stack Overflow用户
提问于 2021-02-21 10:55:38
回答 1查看 46关注 0票数 0

我正在用C语言编写一个"shell“项目,当我试图写入stderr时(当出现错误时),消息被打印出来(stdout),但是输出的字符串没有到达stderr (脚本对此进行了测试,我们可以假定它可以工作)。

这就是我的脚本的结构

代码语言:javascript
复制
int main(int argc, char * argv) {
    ...
    while(some_expression) {
        switch(other_expression) {
            ...
            case k:
                raise_error();
                break;
            ...
        }
    }
}

raise_error()看起来像这样:

代码语言:javascript
复制
void raise_error() {
    char error_message[30] = "An error has occurred\n";
    write(STDERR_FILENO, error_message, strlen(error_message));
}

当我检查应该包含错误消息(由测试脚本生成)的文件时,它是空的,但是错误消息出现在控制台输出(stdout)中。如果删除main中的所有内容,只放入raise_error(),它就能正常工作,错误消息会出现在stderr文件中。我还用下一种方式修改了raise_error():

代码语言:javascript
复制
void raise_error() {
    printf("Raise error method is reached");
    char error_message[30] = "An error has occurred\n";
    write(STDERR_FILENO, error_message, strlen(error_message));
}

然后,我的输出如下所示:

代码语言:javascript
复制
An error has occurred
Raise error method is reached

我可能做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2021-02-21 11:08:38

我认为您正在使用">“将输出重定向到一个文件。如果您正在执行此操作,请尝试更改为本例中的“命令>文件2>&1”。相应地替换命令和文件。有关更详细的说明,请参阅https://linuxize.com/post/bash-redirect-stderr-stdout/

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66298701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档