草庐IT

windows - 有没有办法在 Windows 上收听信号

我正在用Rust为Windows编写一个小的shell,我想终止我生成的Command并防止我的shell退出。有没有办法在Rust中捕获WindowsSIGINT等效项? 最佳答案 有acrate,chan-signal,旨在通过生成线程并让它等待信号来帮助处理此问题。编辑:它目前不支持Windows。有anRFC要求将此功能集成到语言的标准库中,但它还很年轻。看来您的选择是选择FFI。 关于windows-有没有办法在Windows上收听信号,我们在StackOverflow上找到一

Linux:在不破坏后续核心转储的寄存器的情况下监听信号?

当我收到导致核心转储的信号时,我想运行我自己的处理程序以将siginfo_t和ucontext_t结构复制到全局变量,以便可以在核心转储中访问它们。目前在我的处理程序结束时,我重新分配默认处理程序并调用raise(thesig)。这样做的问题是核心转储“信息寄存器”显示了我的处理程序中寄存器的状态,而不是原始信号时的状态。我意识到,因为我已经保存了ucontext_t,所以我可以在其中查找原始寄存器值,但是当核心转储在团队中传递时,这些知识可能会丢失/忘记。所以我的问题是:有没有办法重新发出信号,并确保核心转储文件保存原始信号的寄存器状态?我想也许我可以使用一些内联汇编来手动恢复处理程