echo "Hello World" > /dev/stdout 不打印任何内容

echo "Hello World" > /dev/stdout 不打印任何内容

设想:

$ echo "Hello World" > /dev/stderr
Hello World

$ echo "Hello World" > /dev/stdout

$ uname -a
CYGWIN_NT-10.0 xxx 3.3.4(0.341/5/3) 2022-01-31 19:35 x86_64 Cygwin

为什么echo "Hello World" > /dev/stdout什么也不打印?如何排除故障?

UPD。

打印正常吗echo "Hello World"

是的:

$ echo "Hello World"
Hello World

如果没有,您exec >/dev/null是否在 shell 中调用或类似的?

不。

UPD2。找到它停止工作的地方:

$ clang t554.c -std=c11 -pedantic -Wall -Wextra -c -S -O3 -o /dev/stdout
        .text
        <asm code>

# "exxxtern" was a typo
$ clang t554.c -std=c11 -pedantic -Wall -Wextra -c -S -O3 -o /dev/stdout
t554.c:6:3: error: use of undeclared identifier 'exxxtern'
                exxxtern int xxx;
                ^
1 error generated.


TASKING+pavel.morozkin@SPBPC023 ~
$ clang t554.c -std=c11 -pedantic -Wall -Wextra -c -S -O3 -o /dev/stdout
# nothing is printed for the 1st time

UPD3。我可以在另一台机器上用 clang 重现它:

$ clang t455.c -S -o /dev/stdout
        .text
        <asm code>

# introduce the error

$ clang t455.c -S -o /dev/stdout
t455.c:26:1: error: unknown type name 'x'
x
^
t455.c:26:2: error: expected identifier or '('
x
 ^
2 errors generated.

# fix the error

$ clang t455.c -S -o /dev/stdout
# nothing is printed

$ clang --version
clang version 8.0.1 (tags/RELEASE_801/final)

答案1

这是由于以下问题:https://github.com/llvm/llvm-project/issues/54086

如果“-o”指定符号链接,则当 clang 成功编译某些内容时,它会写入符号链接的目标,但当编译失败时,它会删除符号链接本身。

相关内容