Hello I am writing a multithreaded application with Linux C++ API. In my threads I have to execute other binaries or commands with data exchange between these processes (I use pipes). So I use fork, set up pipe and call execvp. mChildPID = fork(); if (mChildPID == -1) { WRITE_ERROR("PipeProcess", 10, "Linux", "Can't_create_process"); } else if (!mChildPID) { dup2(mPipeA[0], STDIN_FILENO); dup2(mPipeB[1], STDOUT_FILENO); auto itt = &mRawParameters[0]; execvp(mRawParameters[0], &mRawParameters[0]); } If my application creates only one thread (and forks from it), everything works fine. But then I use multiple threads, it leads to crashes. After some searching, I come to the conclusion that you should not use fork and std::thread at the same time (application). Is there a way to create a new process without fork and exec because i can't remove std::thread?