PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
[讨论] Docker的字串显示处理是怎么做出来的?
楼主:
InvincibleK
(我是无敌的K)
2019-08-28 10:19:19
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?
作者: jerryh001
2019-08-28 10:24:00
直接盖掉那一行
作者:
CP64
(( ̄▽ ̄#)﹏﹏)
2019-08-28 11:54:00
基本上是用 ansi escape sequence 来移动光标跟盖掉重画的
作者:
a58524andy
(a58524andy)
2019-08-28 12:22:00
cout << '\b' << flush
作者: eddie55020 (eddie)
2019-08-28 20:02:00
ncurses?
作者:
firejox
(Tangent)
2019-08-28 20:30:00
ncurses
楼主:
InvincibleK
(我是无敌的K)
2019-08-29 16:43:00
我就在想纯C不太可能,果然是C++来的~
作者: eddie55020 (eddie)
2019-08-29 16:51:00
纯c可以啊,上面那个'\b'只是ASCII code而已ncurses也是c的库
作者:
LPH66
(-6.2598534e+18f)
2019-08-29 16:53:00
其实 \b \r 的机制和 <ncurses.h> 的机制是不一样的<ncurses.h> 会需要平台支援, 但能控制的范围就很大\b \r 则是这些 ascii 字符古早以前的意义转义到萤幕显示上所以其控制范围只有当年的行控制而已至于 ansi escape sequence 也是要看平台支援
作者:
james732
(好人超)
2019-08-29 17:01:00
C就用 printf("%c", '\b'); 也是一样的
作者:
lantw44
(#######################)
2019-08-30 22:44:00
Docker 是 Go 写的吧?从 pkg/jsonmessage 看起来是这个
https://github.com/morikuni/aec
只用 \b 和 \r 应该没办法像 Docker 那样退回上一行
继续阅读
[问题] 如何消除泛型降转的警告
s4300026
[问题] 请教header与source的关系
d630200x
Re: [问题] Cache size量测小程式数据解释
hsnuer1171
[讨论] printf before scanf 请益
anoymouse
[问题] 多次printf对变量的影响
OnlyCourage
Re: [问题] 多网卡的raw socket疑问
chigi
Re: [问题] 多网卡的raw socket疑问
Schottky
[问题] 多网卡的raw socket疑问
chigi
[问题] C++ 储存XML多笔资料的问题
jayzhuang
printf的%s与&问题
OnlyCourage
Links
booklink
Contact Us: admin [ a t ] ucptt.com