我想要做的是使用我自己的单一命令行应用程序中的Windows C API来创建一个全新的流程。 (实际上有几个)。我希望能够以任何我想要的方式命名这个过程,我想要它做的只是做sleep(30)
让我走。
我无法使用CreateFile()
API执行此操作,因为它希望我指定一个可执行文件来运行新进程。我所追求的东西有点像Linux上的Fork()
。
我该怎么做呢?我是否必须执行一些复杂的操作,比如在程序的资源部分中嵌入一个调用sleep()
的 exe ,删除它然后在其上运行CreateProcess()
?
答案 0 :(得分:0)
阅读并与人们交谈,这是我找到的与我有同样问题的人所发现的。
CreateProcess()需要启动可执行文件。 Windows上没有fork()的等价物。你需要传递一个可执行文件。
有两种方法可以做到这一点: 1)在资源部分嵌入一个新的可执行文件,将其删除到磁盘,然后从主可执行文件中调用CreateProcess()。
2)让您的主进程在其自己的可执行文件上调用CreateProcess(),并处理动态再次调用时发生的情况。例如,如果我运行没有参数的myApp.exe,请执行其主要任务,例如在其自己的可执行文件上调用CreateFile()。要告诉它不仅仅是正常运行,你可以做一些类似的事情,将可执行文件作为参数。然后您可以相应地处理此问题。例如,如果您随后使用参数" foo"调用myapp.exe,则应用程序会知道它的运行方式不同并相应地处理执行。例如,在main中,当它看到参数foo时,它可以遍历自己的PEB并将进程名称更改为foo.exe(因此它看起来像一个新的可执行文件),然后执行您想要的任何操作。
我希望我的解释在那里有意义。
感谢您的帮助