fork/chroot等效于Windows服务器应用程序

cod*_*box 5 c windows webserver fork chroot

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

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

Mic*_*lon 9

首先,在Windows平台上类似的chroot就是RUNAS这是记录在这里.如果您需要从程序中执行此操作,那么研究此C++源代码应该可以帮助您了解如何使用Windows API.它并不完全相同,chroot()但是Windows民众通过创建具有极其有限权限的用户并仅授予该用户对应用程序文件夹的读取权限以及对一个文件夹的数据写入权限来使用它来创建类似chroot jail的内容.

您可能不希望fork()在Windows 上完全模拟,因为它听起来并不像您需要走得那么远.要了解用于创建进程的Windows API及其与之不同的方法fork(),请查看Mr. Peabody Explains fork().Cygwin的fork实现的实际当前源代码向您展示了当前的技术发展水平.

Microsoft的文档CreateProcess(),CreateThread()可以查找有关它们之间差异的更多信息.

最后,如果您不想学习所有详细的平台细节,只需编写适用于Windows和Unix的可移植程序,为什么不直接使用Apache Portable Runtime库本身.以下是一些关于流程创建的文档,其中包含一些示例代码,用于创建新流程.

  • 你是对的,它不是chroot()因为Windows没有chroot(),但RUNAS.EXE是Windows用户用来创建类似于UNIX chroot jail的东西. (4认同)
  • RUNAS与chroot监狱并不相似. (3认同)