社区
进程/线程/DLL
帖子详情
使用CreateProcess启动Ping程序, 利用管道与Ping通信, 但是无法使用^C让Ping终止
zhangxvpp
2008-05-10 10:50:31
Rt;
我使用CreateProcess 启动Windows下的Ping程序, 可以利用管道获得Ping的执行过程, 但是在执行过程中我想使用^C(Ctrl + C)让Ping程序终止掉, 但是发现这个字符(0x03)发送给管道是成功的, 但是Ping没有停止下来!
...全文
200
8
打赏
收藏
使用CreateProcess启动Ping程序, 利用管道与Ping通信, 但是无法使用^C让Ping终止
Rt; 我使用CreateProcess 启动Windows下的Ping程序, 可以利用管道获得Ping的执行过程, 但是在执行过程中我想使用^C(Ctrl + C)让Ping程序终止掉, 但是发现这个字符(0x03)发送给管道是成功的, 但是Ping没有停止下来!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wuming2003
2008-05-12
打赏
举报
回复
有一个地方你要改一下,smallapp.cpp 中GenerateConsoleCtrlEvent生成的是CTRL_BREAK_EVENT事件,你要改成CTRL_C_EVENT
wuming2003
2008-05-12
打赏
举报
回复
GenerateConsoleCtrlEvent 的确是比较难用(不知道微软为什么会提供这么难用的api,弱化console???),Jeffrey Richter给了一个经典用法,你可以参考参考。http://www.microsoft.com/msj/0698/win320698.aspx,上面有一份代码,估计可以解决你的问题。
zhangxvpp
2008-05-12
打赏
举报
回复
直接用TerminateProcess结束进程,合并绕弯去发送CTRL+C。
BOOL TerminateProcess(
HANDLE hProcess, // handle to the process
UINT uExitCode // exit code for the process
);
这个不行吧, 直接使用TerminateProcess 子进程确实可以结束, 但是太粗暴了, Ping的统计信息就没有了, 我之所以使用Ctrl+C的方式就是可以在进程结束之前可以获得统计信息
zhangxvpp
2008-05-12
打赏
举报
回复
引用 1 楼 wuming2003 的回复:
你直接向管道写入^C是没用的,键盘的ctrl+C会使操作系统对当前运行的进程产生一个异常,因此如果你想模拟ctrl+c,应该使用GenerateConsoleCtrlEvent,而不是向标准输入写入^C
GenerateConsoleCtrlEvent 我尝试了,结果不好用啊, 我用CreateProcess 启动了Ping程序, 一个线程实时的从Ping程序获得结果, 使用GenerateConsoleCtrlEvent 向dwProcessID发从Ctrl+c 一点作用都没有, 不知道怎么回事啊!
vocanicy
2008-05-11
打赏
举报
回复
直接用TerminateProcess结束进程,合并绕弯去发送CTRL+C。
BOOL TerminateProcess(
HANDLE hProcess, // handle to the process
UINT uExitCode // exit code for the process
);
Eleven
2008-05-11
打赏
举报
回复
up
abomber2
2008-05-11
打赏
举报
回复
[Quote=引用 1 楼 wuming2003 的回复:]
你直接向管道写入^C是没用的,键盘的ctrl+C会使操作系统对当前运行的进程产生一个异常,因此如果你想模拟ctrl+c,应该使用GenerateConsoleCtrlEvent,而不是向标准输入写入^C
[/Quote]支持,学习了
wuming2003
2008-05-10
打赏
举报
回复
你直接向管道写入^C是没用的,键盘的ctrl+C会使操作系统对当前运行的进程产生一个异常,因此如果你想模拟ctrl+c,应该使用GenerateConsoleCtrlEvent,而不是向标准输入写入^C
ping
课程设计
ping
课程设计,mfc做的界面,有源代码,可以查看
ping
相关的信息
在进程创建过程中
使用
ping
命令
在进程创建过程中
使用
ping
命令,练习
使用
ping
命令!
VC++实现CMD命令执行与获得返回信息
VC++6.0实现CMD命令执行与获得返回信息,用
CreateProcess
执行CMD命令,用命名
管道
来获得返回的数据.基本上可以执行所有CMD命令.
基于可视化界面实现
Ping
命令
基于MFC可视化界面实现
ping
的两种方式,一种简单,一种涉及了多线程问题,已经成功借助此
程序
实现了课程设计作业
Windows 网络与
通信
程序
设计(第2版)
Windows 网络与
通信
程序
设计(第2版)
程序
代码
进程/线程/DLL
15,467
社区成员
49,171
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章