当前位置: 首页 > 面试题库 >

在Windows中发送任意信号?

东门俊民
2023-03-14
问题内容

Linux支持使用-Command 向进程发送任意Posix-
Signal,例如SIGINTSIGTERM发送给进程kill。虽然SIGINT并且SIGTERM以无聊或友好的方式结束流程的乏味老方法SIGQUIT是要触发核心转储。这可以用来触发正在运行的Java
VM以打印出线程转储,包括所有正在运行的线程的堆栈跟踪-整齐!在打印调试信息之后,Java
VM将继续执行以前的操作;实际上,线程转储仅发生在另一个具有最高优先级的派生线程中。(您可以使用自己进行尝试kill -3 <VM-PID>。)

请注意,您还可以使用-
package中的(不支持!)SignalSignalHandler类注册自己的信号处理程序sun.misc,因此您可以从中获得各种乐趣。

但是,我还没有找到一种向Windows进程发送信号的方法。
信号是由某些用户输入创建的:例如,在两个平台上都Ctrl-C触发一个SIGINT。但是,似乎没有任何实用程序可以将信号手动发送到Windows上正在运行的非交互进程。显而易见的解决方案是使用Cygwin
kill可执行文件,但是尽管它可以使用适当的Windows
API结束Windows进程,但我无法随其发送SIGBREAK(与Windows等效SIGQUIT)。实际上,我认为它能够发送到Windows进程的唯一信号是SIGTERM

因此,总而言之,重复一下标题:如何向Windows中的进程发送任意信号?


问题答案:

如果您要明确/以编程方式杀死任何其他程序/进程,则在SysInternals的pstools中,有一个名为“
pskill”的小工具,其行为与Unixen的“ kill”相同。

如果您还需要其他内容,请继续阅读(尽管我可能在下面的某些详细信息上有误-自从我上次仅使用WinAPI和Charles Petzold的出色著作“
Programming for Windows”作为指南开发Windows C程序以来,这已经成为一个世纪。 )。

在Windows上,您没有适当的“信号”,WinMain和WinProc从操作系统接收的功能是简单的 消息 。例如,当您单击窗口的“
X”按钮时,Windows会向该窗口的处理程序发送消息WM_CLOSE。当窗口被删除但程序仍在运行时,它将发送WM_DESTROY。当它即将脱离主消息处理循环时,WinMain(不是WinProc)将收到WM_QUIT。您的程序应按预期对所有这些做出响应-
您实际上可以通过在收到WM_CLOSE后不执行应做的事情来开发“无法关闭”的应用程序。

当用户从Windows任务管理器中选择任务并单击“结束任务”时,操作系统将发送WM_CLOSE(还有另一个我不记得的消息)。但是,如果您使用“结束进程”,则该进程将直接终止,永远不会发送任何消息(来源:旧的新事物)

我记得有一种获取另一个进程窗口的HWND的方法,一旦获得另一个进程可以通过函数PostMessage和DispatchMessage向该窗口发送消息。



 类似资料:
  • 我正在尝试仅从我的应用程序发送彩信。在android开发者教程的帮助下,我把它变成了默认的消息应用(http://android-developers.blogspot.com/2013/10/getting-your-sms-apps-ready-for-kitkat.html). 我的清单: BroadcastReceiver监听传入的SMS消息: 监听传入彩信的BroadcastRecenc

  • 问题内容: 首先,我真的很惊讶这不是重复的,因为在Objective-C中有大量的堆栈溢出问题可以解决这个问题,但是我还没有看到使用Swift的好答案。 我正在寻找的是Swift中的代码段,该代码段将任意字符串作为文本消息的正文发送到给定的电话号码。从本质上讲,我希望像这样从苹果的官方文档,但是在斯威夫特,而不是Objective- C的。 我认为这并不是太困难,因为可以在Android中只需几行

  • 是否可以用交易发送任意文本? 是的。文本应该是ASCII编码的,并在交易的数据中以十六进制字符串的形式提供。示例如下: RawTransaction.createTransaction( <nonce>, GAS_PRICE, GAS_LIMIT, "0x<address>", <amount>, "0x<hex encoded text>"); byte[] signedMes

  • 请注意:我在这里创建了这个GitHub项目,它可以用来完美地再现我看到的问题。 Java8试图通过gradle-launch4j Gradle插件使用Launch4J构建一个Windows本机EXE应用程序。我正在我的Mac上开发一个Java Swing应用程序,但该应用程序必须在Windows10上作为Windows EXE运行。我也在使用ShadowJar来构建我自带的“胖罐”。 我可以构建(

  • 本文向大家介绍Twilio 发送短信,包括了Twilio 发送短信的使用技巧和注意事项,需要的朋友参考一下 示例 要使用Twilio和Python发送您的第一条SMS,您只需要Twilio-Python帮助程序库即可开始。            

  • 本文向大家介绍Twilio 发送彩信,包括了Twilio 发送彩信的使用技巧和注意事项,需要的朋友参考一下 示例 您可以使用参数在邮件中添加图片media_url。