gpt4 book ai didi

c - (C/Linux) 通过 netcat 使用 bin/sh shell 时出现问题 - printfs 直到程序结束才出现在屏幕上

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:38 25 4
gpt4 key购买 nike

我正在使用 bin/sh 作为我的 shell 通过 netcat 访问我的 linux box。我编写了一个小程序,摘录如下:

printf("Enter command to exec \n");

fgets(abc,128,stdin);

....

发生的事情是,当我在 shell 中通过 netcat 运行程序时,直到我实际退出程序后,“输入命令发送到系统”才会打印出来。

它应该是在 ./program 之后出现在屏幕上的第一件事,奇怪的是它在运行时接受了我的输入,就好像跳过了 printf 命令一样。我的输入被很好地发送到系统(并打印输出),但屏幕是空白的,没有我编码的 printfs 出现。

然而,一旦我退出程序,所有的 printfs 在它返回到 shell 之前实际上出现了(好像被缓冲了)。关于为什么会发生这种情况的任何想法?如果您需要更多信息,请告诉我,我很乐意更新主题。

非常感谢

最佳答案

在终端上 stdout 通常是行缓冲的,你必须 fflush(stdout) 或者打印一个新行 '\n' 查看打印的字符。

在非交互式设备上,流通常是全缓冲的,您必须刷新 stdout 才能打印字符:

printf("Enter command to send to system \n");
fflush(stdout);

关于c - (C/Linux) 通过 netcat 使用 bin/sh shell 时出现问题 - printfs 直到程序结束才出现在屏幕上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9136173/

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