前段时间,因为我加载了两个都使用$SIG{WINCH} 的模块,所以我在使用$SIG{WINCH}时遇到了问题。现在我尝试重构这个例子,但是这次我把一个模块放在了一个子例程中的$SIG{WINCH}中。
use warnings;
use strict;
package My_Package;
use Exporter 'import';
our @EXPORT = qw(choose);
sub choose {
# ...
my $size_changed;
local $SIG{WINCH} = sub { $size_changed = 1;
我正在尝试用Python在Curses中创建一个接口,但我想知道,当脚本执行时,当窗口的终端增加时,我如何才能使其更具可移植性。
例如,窗口(height:80,width:24)中的以下代码
#!/usr/bin/python
import curses
import time
stdscr = curses.initscr()
curses.cbreak()
curses.noecho()
stdscr.keypad(1)
try:
# Run your code here
height,width = stdscr.getmaxyx()
num = min(heigh
我想显示一个标题,每X行,其中X使标题显示,最后一个滚动在屏幕上。用户可以改变终端的大小,程序应该知道答案。大致类似于
i = get_lines()+1;
while (1) {
if (i > get_lines()) {
printf("header");
i = 0;
} else {
i++;
}
do_stuff();
}
我在Bash中构建了一个简单的选择菜单。它目前水平显示菜单(带有选项卡),如下所示:
1) Create a VM from scratch 3) Command-line Usage
2) Management Menu 4) Quit
我希望名单看起来像这样:
1) Create a VM from scratch
2) Management Menu
3) Command-line Usage
4) Quit
更新:这是我的代码:
PS3="Please choose a valid option : "
OPTIONS=("
这是一段简单的代码,它绘制一个几乎和屏幕一样长的绿色条,并在末尾写一个数字,定期刷新(代码是用PHP编写的,但它只是常规的ascii代码):
function update($x)
{
// get the console width
$width = exec('tput cols');
// go back up a line if this isn't the first line
if($x) {
echo "\033[1A";
}
// print a green bar wi
我想要生成一个排序列表与所有8位数字-从00000000到99999999。我输入了shell:
f() {
while IFS="" read -r line; do
for i in {0..9}; do
echo "$line$i";
done;
done
}
echo | f | f | f | f | f | f | f | f | tee result.txt | wc -l
反应是
bash: echo: write error: Interrupted system call
bash: echo: write
我们正在通过SSH使用一个基于文本的程序。会话是通过一个登录脚本启动的,该脚本做了一些设置,然后在没有shell的情况下启动程序。它在油灰中效果很好。我们正在尝试将其用于移动SSH客户端,如白蚁。
问题是xHarbour程序识别终端的变化,比如旋转屏幕或关闭键盘。因此,如果调整了终端的大小,xHarbour程序就会知道它并更改控制台大小。
使用stty x rows y columns,我可以设置初始终端大小。
我试着在程序启动前将这些命令放入init脚本中,但是如果客户端屏幕大小发生变化(关闭键盘、旋转屏幕),则会再次自动更改值并破坏输出。我还使用了shopt -u checkwinsize
在大多数功能语言(包括Haskell )中,定义链接列表类型本身是简单的:
data List a = Nil | Cons a (List a)
但是,我在Haskell教程中找不到显示如何定义自己的数组类型的教程。如何定义数组数据类型,就像我们从无到有地定义自己的列表一样?
Note:我的问题不是如何在Haskell中使用数组,而是理论上如何定义自己的数组类型,就像为List所做的那样,而不使用任何类型的库或内置功能。