我想写一个用d符号填充屏幕的短d程序。这就是我所拥有的
import std.stdio;
import std.process;
import std.conv;
void main(string[] args){
auto lines = environment.get("LINES");
int line_count = to!int(lines);
for(int a = 1; a <= line_count; a++){
writeln("######################################################################");
}
}
我预计这会有效,因为当我从终端执行“echo $ LINES”时会打印“47”。但是,当我在同一个会话中通过rdmd运行程序时,LINES显示为空。这是在Ubuntu Raring上。有什么想法吗?
答案 0 :(得分:5)
如果你可以获取命令stty size
的输出,那可能比检查$LINES
和$COLUMNS
环境变量更可靠。
或者您可以按照this answer中的说明调用TIOCGWINSZ
ioctl。
答案 1 :(得分:3)
如果您只是想要一个简单的解决方法,可以在export LINES COLUMNS
中添加~/.bashrc
,以便在您的程序中提供这些变量。
要获得正确的解决方案,您可以尝试调用ioctl TIOCGWINSZ,或者找到支持查询终端的D库(例如ncurses包装器)。