微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 C 向 Windows 上的另一个进程发送信号替代终止 POSIX

如何解决使用 C 向 Windows 上的另一个进程发送信号替代终止 POSIX

我正在将一个为 POSIX 系统编写的 C/Fortran 包移植到 Windows。该软件的大部分 Fortran 部分都运行数学计算。 C 代码充当 Fortran 和系统之间的接口。代码完全基于控制台,没有 GUI。

该软件与 MPI 并行,即在启动后运行多个进程 - 一个主进程和多个子进程。

现在,我在移植时面临的障碍之一是处理信号的 C 代码。主进程和子进程都有各自的信号处理程序。信号处理的实现方式是,当主进程收到 SIGTERM 或 SIGSEGV 时,它会将这些发送给子进程。在 POSIX 中,这是由 kill(pid,SIGTERM) 实现的。子进程的信号处理程序然后与 Fortran 部分交互以优雅地将程序退出

将这种行为移植到 Windows 的最佳策略是什么?我对 Fortran 不太熟悉,所以如果可以的话,我会保持 Fortran 部分不变。我唯一需要确保的是,主进程以某种方式通过它们的 PID 与子进程通信,然后我就可以开始编写代码了。

我问过有关 Windows 上 kill() 的替代方案的问题,似乎没有简单的替代方案。请添加答案,即使这意味着我必须修改大量代码。 C 信号代码可以在我问过这个 here 的另一个问题中看到。

(请不要提及 cygwin 或 WSL。Cygwin 无法编译它,我需​​要从 Windows 运行它,WSL 二进制文件在它之外无法运行)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。