| | |
| | | |
| | | return returnValue; |
| | | } // createPidFile |
| | |
|
| | | // ----------------------------------------------------
|
| | | // Function used to create a process with the given command.
|
| | | // The information about the process is stored in procInfo.
|
| | | // The function returns TRUE if the process could be created
|
| | | // and FALSE otherwise.
|
| | | // ----------------------------------------------------
|
| | | BOOL createChildProcess(char* command, BOOL background,
|
| | | PROCESS_INFORMATION* procInfo)
|
| | | {
|
| | | BOOL createOk;
|
| | | STARTUPINFO startInfo; // info to pass to the new process
|
| | | DWORD processFlag; // background process flag
|
| | |
|
| | | // reset process info first
|
| | | ZeroMemory(procInfo, sizeof(PROCESS_INFORMATION));
|
| | |
|
| | | // initialize handles to pass to the child process
|
| | | ZeroMemory(&startInfo, sizeof(STARTUPINFO));
|
| | | startInfo.cb = sizeof(STARTUPINFO);
|
| | | startInfo.dwFlags |= STARTF_USESTDHANDLES; // use handles above
|
| | |
|
| | | // Create the child process
|
| | | processFlag = background == TRUE ? DETACHED_PROCESS : 0;
|
| | | createOk = CreateProcess(
|
| | | NULL, // application name
|
| | | command, // command line
|
| | | NULL, // process security attributes
|
| | | NULL, // primary thread security attributes
|
| | | TRUE, // handles are inherited
|
| | | processFlag, // creation flags
|
| | | NULL, // use parent's environment
|
| | | NULL, // use parent's current directory
|
| | | &startInfo, // STARTUPINFO pointer
|
| | | procInfo // receives PROCESS_INFORMATION
|
| | | );
|
| | |
|
| | | if (!createOk)
|
| | | {
|
| | | fprintf(stderr, "Failed to create child process [%s]\n", command);
|
| | | }
|
| | |
|
| | | return createOk;
|
| | | } // createChildProcess
|
| | | |
| | | // ---------------------------------------------------- |
| | | // Function used to create a process with the given command. |
| | | // The information about the process is stored in procInfo. |
| | | // The function returns TRUE if the process could be created |
| | | // and FALSE otherwise. |
| | | // ---------------------------------------------------- |
| | | BOOL createChildProcess(char* command, BOOL background, |
| | | PROCESS_INFORMATION* procInfo) |
| | | { |
| | | BOOL createOk; |
| | | STARTUPINFO startInfo; // info to pass to the new process |
| | | DWORD processFlag; // background process flag |
| | | |
| | | // reset process info first |
| | | ZeroMemory(procInfo, sizeof(PROCESS_INFORMATION)); |
| | | |
| | | // initialize handles to pass to the child process |
| | | ZeroMemory(&startInfo, sizeof(STARTUPINFO)); |
| | | startInfo.cb = sizeof(STARTUPINFO); |
| | | startInfo.dwFlags |= STARTF_USESTDHANDLES; // use handles above |
| | | |
| | | // Create the child process |
| | | processFlag = background == TRUE ? DETACHED_PROCESS : 0; |
| | | createOk = CreateProcess( |
| | | NULL, // application name |
| | | command, // command line |
| | | NULL, // process security attributes |
| | | NULL, // primary thread security attributes |
| | | TRUE, // handles are inherited |
| | | processFlag, // creation flags |
| | | NULL, // use parent's environment |
| | | NULL, // use parent's current directory |
| | | &startInfo, // STARTUPINFO pointer |
| | | procInfo // receives PROCESS_INFORMATION |
| | | ); |
| | | |
| | | if (!createOk) |
| | | { |
| | | fprintf(stderr, "Failed to create child process [%s]\n", command); |
| | | } |
| | | |
| | | return createOk; |
| | | } // createChildProcess |
| | | |
| | | // ---------------------------------------------------- |
| | | // Function used to launch a process for the given command |