簡體   English   中英

終端上未打印單個字符

[英]Single characters are not printed on the terminal

我有3個不同的進程,所有進程都使用printf打印出單個字符。 但是我在終端中看不到它們。 當我添加換行符printf("\\n H") ,每個字符都在換行符上,我可以看到它們。 如果沒有換行符,為什么不起作用?

它是沖洗的問題。 如果在每個printf之后刷新緩沖區,則應使輸出更接近所需的輸出。 要刷新標准輸出,只需執行fflush( stdout )

C標准為輸出流定義了3種緩沖類型:

  • 未緩沖→未緩沖
  • 行緩沖→緩沖直到換行
  • 完全緩沖→緩沖直至緩沖大小

可以通過setvbuf(3)setbuf(3)函數更改輸出流的緩沖類型。

C標准要求stderr在啟動時不要完全緩沖(通常在許多實現中都沒有緩沖,以便盡快發現錯誤)。 僅當可以確定不引用終端時, stdout才被完全緩沖(當引用終端時,許多實現將其初始化為行緩沖,這就是您所看到的)。

使用'write(1,&c,1)'系統調用,或

fprintf(stderr,'%c', c);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM