我从用户处获取输入,然后使用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/