Fork

I believe this blog post explains in detail about fork and wait, but I just want my small example here.

Linux only

Execution sequence is interesting in this case

#include <iostream>
#include <sys/wait.h> // wait
#include <unistd.h> // fork, exec

const char* const long_argv[] = {"./long_process.sh", NULL};

int main(int argc, char const *argv[])
{
    if (fork() == 0) {
        std::cout << "child process" << std::endl;
        execvp(long_argv[0], const_cast<char* const *>(long_argv));
    } else {
        std::cout << "parent process" << std::endl;
    }
    int status;
    wait(&status);
    std::cout << "parent done" << std::endl;

    return 0;
}
#!/bin/bash

for i in {1..10}; do
    echo $i
    sleep 1
done

You should be carefull when call functions like system or fork itself in applications that consume a lot of memory (like games) because fork will clone the application process first which wil require free space equal at least to current needs of the application.