Hi,
I have a python simulator file sim.py. I need to start, stop and restart this simulator from a C/C++ test file test.cpp. I tried using system( "\sim.py" ) in my test file. This starts the simulator but in the same window as test.exe. In this case how do i close the simulator alone when i want to and continue with the test? Also is it possible to open this simulator in a separate window and close it later? Please help.

-Aparna

call win32 api function CreateProcess() and you will have a lot more control over how the new process is created. Never tried it with a *.py program.

Thanks for the details. I tried using CreateProcess but could not get the sim.py running. Below is the code that i used. Let me know if you have any suggestions.

STARTUPINFO siStartupInfo;
PROCESS_INFORMATION piProcessInfo;

memset(&siStartupInfo, 0, sizeof(siStartupInfo));
memset(&piProcessInfo, 0, sizeof(piProcessInfo));

siStartupInfo.cb = sizeof(siStartupInfo);

if(CreateProcess("C:\\sim.py", // Application name
NULL, // Application arguments
0,
0,
FALSE,
CREATE_DEFAULT_ERROR_MODE,
0,
0, // Working directory
&siStartupInfo,
&piProcessInfo) == FALSE)
// Could not start application -> call 'GetLastError()'

I have another solution.. might not be very professional but it will work for sure. Ok as you know you are starting a new process and you certainly know the name of the process. So once the process is started, you can use "system" function again for a 'batch' file. This batch file contains a small code to kill a process you can see the 'taskkill' command for MS DOS. If you are using linux i am very sure that there will be a command to terminate a process. So if you are in a hurry you can use this technique but if you can spend more time on this task.. do it the professional way :].. hope this helps

Thanks for all the help! I am using Create process method to start the process and use the process id thus generated to kill the process later by taskkill command and it works fine!

So sometimes a bit of decent hacking can be useful :]