Or in windows:
Code:
#include <windows.h>
#include <stdio.h>
int _stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR szCmdLine, int iCmdShow)
{
STARTUPINFO siProg1;
STARTUPINFO siProg2;
PROCESS_INFORMATION piProg1;
PROCESS_INFORMATION piProg2;
HANDLE pHandle[2];
// Initialize
ZeroMemory(&siProg1, sizeof(siProg1));
ZeroMemory(&siProg2, sizeof(siProg2));
siProg1.cb = sizeof(siProg1);
siProg2.cb = sizeof(siProg2);
ZeroMemory(&piProg1, sizeof(piProg1));
ZeroMemory(&piProg2, sizeof(piProg2));
// Start up the programs
if (!CreateProcess(NULL, "program1.exe", NULL, NULL,
FALSE, 0, NULL, NULL, &siProg1, &piProg1) ||
!CreateProcess(NULL, "program2.exe", NULL, NULL,
FALSE, 0, NULL, NULL, &siProg2, &piProg2))
{
printf("Random Error!\n");
exit(1);
}
// Wait for programs to exit
pHandle[0] = piProg1.hProcess;
pHandle[1] = piProg2.hProcess;
WaitForMultipleObjects(2, pHandle, TRUE, INFINITE);
// Cleanup
CloseHandle(piProg1.hProcess);
CloseHandle(piProg1.hThread);
CloseHandle(piProg2.hProcess);
CloseHandle(piProg2.hThread);
return 0;
}
EDIT: Corrected 1st parameter for WaitForMultipleObjects() function