Cygwin 或 Gnuwin32 或 MYSYS?

标签 c windows fork openmpi

<分区>

我尝试用 google 搜索它,我了解了一些东西,但仍然不知道哪一个适合我的需要。 我想做的就是在 Unix 环境下编译 C 文件(或 C++)(这样我就可以使用 Fork 和不能在 Windows 上运行的东西)并在编译后运行这些文件。

更准确地说,我需要使用 Fork+Semaphores 并使用 OpenMPI。我知道我可以用 Cygwin 来做这些(或者这就是我所理解的),但它似乎有一个非常大的尺寸,所以我想如果这个 Gnuwin32 或 MYSYS 可以做我想做的事情并且它们的尺寸比 Cygwin 小,那更好吗?

最佳答案

如果您绝对确定您需要 fork 并且不能使用更独立于平台的多处理方式(一个瘦fork/CreateProcess 包装器) 或多线程(pthreads, Boost.Thread, C++11 std::thread, ...),那么你就是在强制自己使用 Cygwin。

请注意,Cygwin 的 fork 几乎与 fork 在 Windows 上的效率一样高,但不是很有效,因为操作系统在设计时并未考虑到该操作,因此缺少内核级支持。

Cygwin 本身并不大:它只是您链接到的提供 POSIX 接口(interface)的 DLL。但请注意,Cygwin 是 GPL,链接到 Cygwin DLL 也会在您的项目中强制使用 copyleft。

关于Cygwin 或 Gnuwin32 或 MYSYS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26543657/

相关文章:

c - 如果使用已经在主机字节顺序中的整数调用 ntohl() 会发生什么?

C 等效运算符造成混淆

c - 使用 Large_Int 访问共享内存的问题

php - 从批处理文件创建窗口服务?

windows - 我想创建一个批处理脚本,它将按修改日期的顺序打印文件夹中的所有文件

c - 为什么 setTimer 不起作用?

c - C 中 “)” 标记之前的预期表达式错误

c++ - 为什么 C-forkbombs 不像 bash 那样工作?

go - 使用 Golang 启动正在运行的程序的另一个实例的好方法是什么?

c - 使用进程、fork 命令