我最近尝试获取运行此程序的终端大小。
问题在于脚本+程序解决方案不方便,并且不支持用户输入或终端大小更改。
如何在C++代码中做到这一点(而不会影响脚本)?
我的代码:
Bash文件(代替C++程序运行的文件):
cols=`tput cols`
lines=`tput lines`
input="${cols}\n${lines}"
echo -ne "${input}" | [C++ program]
C++文件(实际程序):
#include <iostream>
int main() {
unsigned lines;
unsigned cols;
cin >> cols;
cin >> lines;
// some code here
}
ioctl()
函数和TIOCGWINSZ
常量来获取终端宽度。以下是一个示例代码:#include
#include
int main() {
struct winsize w;
ioctl(0, TIOCGWINSZ, &w);
printf("Terminal width: %d\n", w.ws_col);
return 0;
}
请注意,此方法可能不适用于非终端设备。 - 001system("tput cols")...
可以解决问题,但我从未尝试过。 - j-p-lncursesw
或-lncurses
。 - Duck