在我的输出中,某些行每隔几秒刷新一次。如果我通过单击 F11 调整终端大小,则输出就像我想要的那样。如果终端不够大,那么刷新的一些长行被分成两部分,因此,只刷新一行,每次刷新时我也会得到新行。
如果我可以指定终端的默认大小(从我的程序调整大小终端),这可以很容易地避免。如果我能禁止用户在程序运行时更改终端大小,那就太棒了。
while(1)
{
cout<<"Long line that is refreshed every 5s... \r";
//if line is splited in two lines, \r will return to beginning of that new line
//and the first part of original line would stay as it is(won't be rewrited)
sleep(5);
}
如何指定终端大小或停止终端大小调整?
答案 0 :(得分:1)
我认为您不能禁止用户更改终端尺寸。更好的方法是捕获每次更改窗口大小时发送到进程的SIGWINCH信号,并使用TIOCGWINSZ / TIOCGSIZE ioctl()来获取尺寸。
答案 1 :(得分:0)
一些终端仿真器(包括默认的macOS Terminal.app)支持调整大小/移动/等响应打印的控制序列。序列是相当标准的,但并非所有终端仿真器都实现了所有这些序列。
例如:
# set terminal width to 50, height to 100
cout << "\e[8;50;100t";
This answer包括其他一些可用控制序列的概述。