如何通过“LPTHREAD_START_ROUTINE lpStartAddress”类似的参数创建进程?

时间:2010-08-22 10:07:46

标签: c++ process

我想创建一个进程,其语法类似于以下内容,但我不想创建线程

     hThread = CreateThread( 
        NULL,              // no security attribute 
        0,                 // default stack size 
        InstanceThread,    // thread proc
        (LPVOID) hPipe,    // thread parameter 
        0,                 // not suspended 
        &dwThreadId);      // returns thread ID 

但我检查了CreateProcess的参考资料和样本:

BOOL result = ::CreateProcess(
  L"C:\\Windows\\NOTEPAD.exe",
  NULL,
  NULL,
  NULL,
  FALSE,
  NORMAL_PRIORITY_CLASS,
  NULL,
  NULL,
  &startupInfo,
  &processInformation
);

似乎我必须指定一个现有的可执行文件来创建一个进程?如何通过类似于InstanceThread的回调创建一个?

2 个答案:

答案 0 :(得分:1)

你不能这样做。进程和线程是不同的。您只能通过在可执行文件中提供函数的地址来创建进程。

但是,您可以使用某个命令行参数创建您的进程,该参数将被您的进程读取,然后用于调用您想要的目标函数。

你想要达到什么目标?

答案 1 :(得分:0)

或许看看cygwin如何实现fork()。 Unix fork()就是你想要的。