gpt4 book ai didi

c - Windows 服务器应用程序的 fork/chroot 等效项

转载 作者:可可西里 更新时间:2023-11-01 13:28:05 24 4
gpt4 key购买 nike

我用 C 语言编写了一个在 Linux 上运行的小型自定义 Web 服务器应用程序。当应用程序收到请求时,它调用 fork() 并在单独的进程中处理请求,该进程被 chroot 到包含我想要提供的文件的特定目录。

我想将应用程序移植到 Windows,但是 fork() 和 chroot() 在这个平台上都不可用,而且似乎没有任何直接的等价物。你能给我指出一个简单的(最好是写得很好的)代码示例,它将在 Windows 中提供此功能吗?我的 C 不是那么好,所以越简单越好。

最佳答案

首先,Windows 中 chroot 的等效项是 RUNAS,即 documented here .如果您需要从程序中执行此操作,请学习 this C++ source code应该可以帮助您了解如何使用 Windows API。它与 chroot() 并不完全相同,但 Windows 用户使用它来创建类似 chroot jail 的东西,方法是创建一个具有极其有限权限的用户,并且只授予该用户对应用程序文件夹的读取权限,并且对一个文件夹的数据写入权限。

您可能不想在 Windows 上完全模拟 fork(),因为听起来您不需要走那么远。要了解用于创建进程的 Windows API 以及它与 fork() 的区别,请查看 Mr. Peabody Explains fork() . Cygwin's fork implementation 的实际当前源代码向您展示当前的技术水平。

CreateProcess()CreateThread() 的 Microsoft 文档是查找有关它们之间差异的更多信息的地方。

最后,如果您不想了解所有平台细节,只需编写可在 Windows 和 Unix 上运行的可移植程序,为什么不直接使用 Apache Portable Runtime library本身。 Here are some docs on process creation with some sample code , 在 C 中,创建一个新进程。

关于c - Windows 服务器应用程序的 fork/chroot 等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1686578/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com