我从用户处获取输入,然后使用read()和write()系统调用将其打印到标准输出。由于某些原因,除了常规输出外,它还会打印一些额外的字符。其他字符来自用户输入,因此它们不是随机的。但是,我认为这可能是由于未清除缓冲区以接收新输入的事实。我搜索了许多适用于这种情况的不同事物,但我仍然感到困惑。我仅为此使用低级I / O,因此不会实现C标准库。我问过的大多数人都说使用“ fflush”,但我认为这仅适用于stdio.h库,而我不会使用。
在此先感谢您提供任何建议或资源。

最佳答案

您如何“刷新” write()系统调用?


你不知道这是系统调用。您没有任何要刷新的应用程序端缓冲区。


  我从用户处获取输入,然后使用read()write()系统调用将其打印到标准输出。由于某些原因,除了常规输出外,它还会打印一些额外的字符。


您的代码中有一个错误。它看起来应该像这样:

int count;
while ((count = read(inFD, buffer, sizeof buffer)) > 0)
{
    write(outFD, buffer, count);
}


十对一,您有第三个参数write错误。


  我问过的大多数人都说使用“ fflush”,但我认为这仅适用于stdio.h库,而我不会使用。


他们错了,而你是正确的。

关于c++ - 您如何“刷新” write()系统调用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47029139/

10-11 22:01
查看更多