time taken by forked child process

c++, fork, system

Solution

The system() function is to invoke the shell. You can do anything inside it, including running a script. This gives you a lot of flexibility, but it comes with a price: you're loading a shell, and then runBinary inside it. Although I don't think loading the shell would be responsible to so much time difference (15 seconds is a lot, after all), since it doesn't seem you need that - just to run the app - try using something from the exec() family instead.

Problem

This is a sequel to my previous question. I am using fork to create child process. Inside child, I am giving command to run a process as follows: ``` if((childpid=fork())==0) { system("./runBinary "); exit(1) } ``` My runBinary has the functionality of measuring how much time it takes from start to finish. What amazes me is that when I run runBinary directly on command-line, it takes ~60 seconds. However, when I run it as a child process, it takes more, like ~75 or more. Is there something which I can do or am currently doing wrong, which is leading to this? Thanks for the help in advance. MORE DETAILS: I am running on linux RHEL server, with 24 cores. I am measuring CPU time. At a time, I only fork 8 child (sequentially), each of which is bound to different core, using taskset (not shown in code). The system is not loaded except for my own program.

Original source