gpt4 book ai didi

c - 用c语言来说。为什么看起来 system() 先于 printf() 被调用?

转载 作者:行者123 更新时间:2023-12-02 18:48:40 27 4
gpt4 key购买 nike

请查看代码。

#include "stdio.h"
#include "stdlib.h"

int main() {
printf("Hello World");
system("echo \"Hello c\"");
}

运行结果:

Hello c
Hello World

为什么看起来 system() 是在 printf() 之前调用的?

以上测试结果是在manjaro系统上运行的,但是在windows系统上不存在这种现象?

最佳答案

这是由于缓冲造成的。在我看来,echo 退出时会刷新其缓冲区。该输出进入 STDOUT。同时,您自己的代码在缓冲区中具有 printf 输出,并且尚未刷新。

在 printf 行末尾添加 \n 可以让您进行打印,因为 printf 默认情况下是行缓冲的。

有关更多信息,请在此处查看有关缓冲的 libc 部分 https://www.gnu.org/software/libc/manual/html_node/Stream-Buffering.html

关于c - 用c语言来说。为什么看起来 system() 先于 printf() 被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67076867/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com