搜索
aardio官方社区 门户 查看主题

使用process.popen启动一个程序,程序运行期间如何向程序发送命令!

发布者: renmaoer | 发布时间: 2017-10-22 18:12| 查看数: 796| 评论数: 5|帖子模式

举个例子:
  1. import win.ui;
  2. import winex;
  3. import process.popen;
  4. import console;
  5. p=process.popen("ping.exe","127.0.0.1 -t")
  6. for( all,out,err in p.each() ){
  7.    console.log(out)
  8. }
复制代码

如果需要终止ping的运行,并且获取统计信息该怎么办?
使用
process.process.terminate();
的话不会返回下图的统计信息

kernel的AttachConsole()、SetConsoleCtrlHandler()、GenerateConsoleCtrlEvent()这三个API到是能做到,
我就想问问aardio的process.popen能不能实现!

最新评论

renmaoer 发表于 2017-10-22 18:30:07
需要发送一个CONTROL+C
Jacen.He 发表于 2017-10-22 18:42:02
renmaoer 发表于 2017-10-22 18:30
需要发送一个CONTROL+C


CTRL + C 你自己的进程也退出了,
这个很简单 ,你要调用API你就调好了  ::Kernel32.GenerateConsoleCtrlEvent(0,0)

区别是 terminate() 只是退出ping进程,
而 CTRL + C 是把你们俩都干掉,不要想去拦截这个事件,首先是你不会成功,即使不退出那他还会继续ping,

你给了个无限ping 的参数,又要他能自己退出,怎么想的?!
renmaoer 发表于 2017-10-22 18:47:52
Jacen.He 发表于 2017-10-22 18:42
CTRL + C 你自己的进程也退出了,
这个很简单 ,你要调用API你就调好了  ::Kernel32.GenerateConsoleC ...

SetConsoleCtrlHandler(0,true)这个函数不是可以防止自己被干掉吗?网上搜的!

点评

是可以防止被干掉,然后 ping 又可以无限ping 了,前面的帖子里已经讲过  发表于 2017-10-22 19:07
Jacen.He 发表于 2017-10-22 19:03:42
如果你直接打开进程,那你可以通过控制台关闭子进程,
ping.exe 可能拦截了Ctrl + C,在被干掉以前抓紧输出了一点信息。

管道只是读写数据,不能操作控制台,所以对你的问题我的回答是:不能
你可以通过管道写命令,或者让他退出(如果他接受这样的指令)。
否则只能杀进程。

如果你只是要控制ping,倒不必要这么复杂,
你可以自己写一个 ping程序,不用调用 ping.exe。
import console;
import icmp.ping;

var ip = "www.baidu.com";
console.log(
"ping......");

var ping = icmp.ping();
for(i=1;4;1){
   
if( ping.perform(ip) ){
        console.printf(  
"Reply from %s: bytes=%d time=%dms TTL=%d"
            , ping.ip , #ping.requestData  , ping.echoReply.roundTripTime , ping.echoReply.options.ttl  )
    }   
}  

console.pause(
true);

多看看范例这些都有的。
renmaoer 发表于 2017-10-22 19:18:14
Jacen.He 发表于 2017-10-22 19:03
如果你直接打开进程,那你可以通过控制台关闭子进程,
ping.exe 可能拦截了Ctrl + C,在被干掉以前抓紧输出 ...

嗯,就是刚开始学,好多东西不太明白,也不知道从哪里入手,就想进论坛看看,有没有什么启发!范例什么的我也有在看,感觉自己还是有进步的!,就是举个例子,要做的是ESET NOD32的命令行杀毒ECLS的界面,之前有用C#做过(可以正常中止),不过感觉不如AARDIO来的方便,刚好看到管道这一块,可以访问进程读写,我就寻思着是不是可以用AARDIO管道发送命令,感谢版主,我在研究研究!

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-5-28 11:20 , Processed in 0.046875 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表