本质就是接管外部进程的标准输出
这里使用wget.exe以20Kb/s下载一个1GB的测试文件为例子
wget.exe需要自备,这里不提供下载
三种方案都注释了,自行编辑分别测试。

源代码:

io.open();

o = `1GB.bin`;
i = `http://speed.hetzner.de/1GB.bin`;
cmd = `--limit-rate=20k -t 0 -O "%s" "%s"`;
cmd = string.format(cmd,o,i);

/**** 方案一
// hold住后面的执行语句
// 外部执行完毕,再继续向下执行
// 但是ctrl+c的时候不会结束外部进程
import process.popen;
var prcs = process.popen("wget.exe", cmd);
prcs.logResponse();
****/

/**** 方案二
// 仅仅是把外部的输出重定向到标准输出上
// 不等待外部进程结束,立刻执行下一条指令
// 当按下ctrl+c的时候,一起结束
io.popen("wget.exe "++cmd,"r");
/****/

/**** 方案三
// hold住后面的执行语句
// 外部执行完毕,再继续向下执行
// 当按下ctrl+c的时候,一起结束
file = io.popen("wget.exe "++cmd,"r");
line = file.read();
while( line )
{
io.print(line);
line = file.read();
}

file.close();
****/