Hello,
Thanks a lot for the tip; I changed my fcntl call to the following:
"fcntl(myfd, F_SETFD, FD_CLOEXEC)" and that fixed the problem.
I can now run and control external processes using the same API across
most platforms!
I wish the man pages of fcntl could have been clearer about how you were
supposed to apply the FD_CLOEXEC flag...
Yuri Edward
On 6/21/20 9:57 PM, Florian Weimer wrote:
* Yuri Edward:
https://github.com/BlockProject3D/Framework/blob/ProcessManagement/Base/src/Framework/System/Process.cpp
> This is the main class that performs fork, pipe, read, write and
if (fcntl(commonfd[PIPE_WRITE], FD_CLOEXEC, 1) != 0)
That's not how fcntl works. You need to use F_GETFD and F_SETFD to
set the FD_CLOEXEC flag.