I have a little application, let’s call it “launch.exe”. It is a c++ appl.
What I do in it is I call system() 3 times to launch 3 other applications. let’s call these A, B, and C.
problem #1
A, B, and C are GUI apps and “launch.exe” is not able to progress until A exits. Then it is stuck again until B exits. Then stuck again until C exits. I would like lauch.exe to be able to progress while the applications I have opened remain open.
Problem #2
Assuming that I am able to figure out a solution to problem #1, after A, B, and C are launched, I don’t want “launch.exe” to stay open. I want launch.exe to close and I want A, B, and C to remain running.
Here is a scenario for you. Lets us say “launch.exe” only starts one application (let us call it A). Then, after A is started, if i close “launch.exe”, A remains open.
OK…this is what I want but what just happened? Is A an orphan now? And if so, is this a problem?
And what if I closed A before I exited launch.exe? On the surface it seems OK, but what does it return to? If I launched an exe in cmd shell, it would return to that, but since I did it from a system() call in a c++ appl, does it return to my lauch.exe or does it become a zombie?
NOTES:
Why am I useing system()?
–Cause I need something that is Windows/Linux compatible.
–Cause I need to elevate privileges to admin level for some of the applications being launched.
—I should add that it is vital that A, B, and C be totally independent (for security reasons they should not share the same memory space or anything else).
–Last, some of the apps, B, and C are multi-threaded (I state this because I have read that some functions do not spawn multi-threaded applications properly. I’m not clear on reasons why.).
Use
spawninstead, this won’t block the launcher until the child exits.Or, since you’re already using Qt, use
QProcess.There is no portable way to spawn a subprocess as a different user, but the Windows-specific way is
CreateProcessWithLogonW.