On 12/02/2015, at 10:34 AM, Brandon Allbery wrote:
> On Wed, Feb 11, 2015 at 6:31 PM, René J.V. <[email protected]> wrote:
> I take that to mean that doing fork() doesn't oblige you to do an exec() 
> afterwards, it's that you cannot do a fork() from a process that's not been 
> started through exec.
> 
> I will guess that this is related to the fact that such processes are 
> actually started by launchd, and must play by launchd's rules (including not 
> using fork()) so launchd can keep track of them. This would also imply that 
> fork() is actually acceptable as long as the forked processes don't try to 
> use the UI, but are merely background worker processes that communicate with 
> the foreground process if they need UI interaction or etc.

FWIW, there is some special code in the main() program of kdeinit5 that
causes it to fork and re-exec *itself* on Apple OS X (the second time with a
--no-fork arg) --- before it goes on to do its main work.

For more detail, in frameworks/kinit/src/kdeinit/kinit.cpp code, see lines
1705 and 1576ff.  The comments at the head of the second reference say:

/**
 Calling CoreFoundation APIs (which is unavoidable in Qt/Mac) has always had 
issues
 on Mac OS X, but as of 10.5 is explicitly disallowed with an exception.  As a
 result, in the case where we would normally fork and then dlopen code, or 
continue
 to run other code, we must now fork-and-exec.

 See "CoreFoundation and fork()" at 
http://developer.apple.com/releasenotes/CoreFoundation/CoreFoundation.html
*/

When I can get Qt 5 to build and then Frameworks and some KF5 apps, I propose
to start tracking down what is happening on Apple OS X in some of the paths that
kdeinit5 and friends are following, starting with what KToolInvocation is doing 
in a
few major cases.

For a rough but obviously now-out-of-date guide see:
https://techbase.kde.org/Development/Architecture/KDE4/Starting_Other_Programs

Cheers, Ian W.

_______________________________________________
macports-dev mailing list
[email protected]
https://lists.macosforge.org/mailman/listinfo/macports-dev

Reply via email to