免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5053 | 回复: 10
打印 上一主题 下一主题

[win32::GUI问二,求助]杀不完的wget [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-17 21:20 |只看该作者 |倒序浏览
请教各位热心的大侠:

我用win32::gui或TK进行图形编程时,想下载有200个链接的网页(链接保存在文本文件中了)

我用foreach来读取文本文件,并使用了多线程,启动了3个wget来下载。

请问在下载过程中,按“停止”按钮(如何设计?)停止下载?

我用杀进程的方法,因为处于循环中,老是有杀不完的wget。

------------------------------------------------------------------------------------------------
其实我的问题就是在进行图形编程时,如何停止正在运行的程序(不是退出关闭程序。)

[ 本帖最后由 3chi01 于 2008-9-21 13:55 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-09-17 21:27 |只看该作者
原帖由 3chi01 于 2008-9-17 21:20 发表
请教各位热心的大侠:

我用win32::gui或TK进行图形编程时,想下载有200个链接的网页(链接保存在文本文件中了)

我用foreach来读取文本文件,并使用了多线程,同时启动了多个wget来下载。

请问如何在下 ...


應該是Win32::GUI吧,
強列建議您改回來,
免得...

论坛徽章:
0
3 [报告]
发表于 2008-09-17 21:31 |只看该作者
楼上的兄弟,请给点具体意见。我初学,不明白呀。

其实我的问题就是在进行图形编程时,如何停止正在运行的程序。(不是退出关闭程序。)

论坛徽章:
0
4 [报告]
发表于 2008-09-17 21:39 |只看该作者
在循环里面加个flag,当flag为真时执行wget。
然后在点停止按钮的时候,设置flag为假。
然后再杀进程(其实建议不杀比较好)。

论坛徽章:
0
5 [报告]
发表于 2008-09-17 21:51 |只看该作者
原帖由 odacharlee 于 2008-9-17 21:39 发表
在循环里面加个flag,当flag为真时执行wget。
然后在点停止按钮的时候,设置flag为假。
然后再杀进程(其实建议不杀比较好)。



多谢odacharlee的指点,想不到这么及时。很感动。

能给个简单的例子吗?或示意图吗?实在很想解决这个问题。谢谢了。

论坛徽章:
0
6 [报告]
发表于 2008-09-17 22:12 |只看该作者
例子不太好做,不知道你的程序是怎么实现的。只说说思路吧。。

你的程序的主要部分应该是这样吧。。

while(1) {
  if wget进程数 < 3 {
    启动一个wget;
  }
  sleep 1;
}


那么改成下面的样子

flag = true;
while(flag) {
  if wget进程数 < 3 {
    启动一个wget;
  }
  sleep 1;
}
依次杀掉正在运行的wget;

stop按钮的处理:
flag = false;


具体实现方法得你自己去考虑了。

论坛徽章:
0
7 [报告]
发表于 2008-09-17 22:24 |只看该作者
呵呵,多谢了!赶紧试试。:wink: :wink: :wink: :wink: :wink:

论坛徽章:
0
8 [报告]
发表于 2008-09-18 09:39 |只看该作者

回复 #1 3chi01 的帖子

不知道你是怎么调用wget的, wget应该在另一个进程空间中, 没办法终止一个正在进行的wget吧, 除非杀进程.

我觉得可以用LWP模块,代替wget吧,这样可控性更高些.

论坛徽章:
0
9 [报告]
发表于 2008-09-19 21:34 |只看该作者
8楼的想法很不错。LWP用来处理HTTP请求简直是完美的

论坛徽章:
0
10 [报告]
发表于 2008-09-20 20:59 |只看该作者
#原帖由 odacharlee 于 2008-9-17 22:12 发表
while(1) {
  if wget进程数 < 3 {
    启动一个wget;
  }
  sleep 1;
}


那么改成下面的样子

flag = true;
while(flag) {
  if wget进程数 < 3 {
    启动一个wget;
  }
  sleep 1;
}
依次杀掉正在运行的wget;

stop按钮的处理:
flag = false;


好像不行,按下stop按钮后,并没有马上中止wget呀!要等foreach结束才起作用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP