看板 C_and_CPP 關於我們 聯絡資訊
docker pulling images的時候: Using default tag:latest latest:Pulling from library/ubuntu fd2731e4c50c: Downloading [===========> ] 28a2f68d1120: Pull complete a3ed95caeb02: Pull complete ... 在同一行,文字顯示會有動畫的效果, 如: Downloading [===========> ] 完成後, 同一行變成: 28a2f68d1120: Pull complete 印象中, 很古早的時代, Unix Terminal/ Windows DOS早就存在這種效果. 所以docker這個顯示部份,很有可能是用C語言寫的. 想請問大大們, 這是怎麼寫出來的? iostream好像沒有這類functions? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.91.59 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1566958761.A.444.html
jerryh001: 直接蓋掉那一行 08/28 10:24
CP64: 基本上是用 ansi escape sequence 來移動游標跟蓋掉重畫的 08/28 11:54
a58524andy: cout << '\b' << flush 08/28 12:22
eddie55020: ncurses? 08/28 20:02
firejox: ncurses 08/28 20:30
InvincibleK: 我就在想純C不太可能,果然是C++來的~ 08/29 16:43
eddie55020: 純c可以啊,上面那個'\b'只是ASCII code而已 08/29 16:51
eddie55020: ncurses也是c的庫 08/29 16:52
LPH66: 其實 \b \r 的機制和 <ncurses.h> 的機制是不一樣的 08/29 16:53
LPH66: <ncurses.h> 會需要平台支援, 但能控制的範圍就很大 08/29 16:54
LPH66: \b \r 則是這些 ascii 字元古早以前的意義轉義到螢幕顯示上 08/29 16:54
LPH66: 所以其控制範圍只有當年的行控制而已 08/29 16:55
LPH66: 至於 ansi escape sequence 也是要看平台支援 08/29 16:55
james732: C就用 printf("%c", '\b'); 也是一樣的 08/29 17:01
lantw44: Docker 是 Go 寫的吧?從 pkg/jsonmessage 看起來是這個 08/30 22:44
lantw44: https://github.com/morikuni/aec 08/30 22:44
lantw44: 只用 \b 和 \r 應該沒辦法像 Docker 那樣退回上一行 08/30 22:45