On Sunday, 15 de January de 2012 11.47.10, Martin Koller wrote:
>    *    if (!KUniqueApplication::start()) {
>    *       fprintf(stderr, "myAppName is already running!\n");
>    *       return 0;
>    *    }
>    *    KUniqueApplication a;
>    *    return a.exec();
> 
> So one of the very first things the static start() method does is to
> open the session dbus, and this is before a QCoreApplication is available.

It should open a session bus connection, but not *the* 
QDBusConnection::sessionBus() connection.

I know I designed the code like that. You can't open it before because that 
would mean the file descriptor is opened in the wrong process. So where is the 
warninig coming from? Did I place the warning in the wrong object in QtDBus? 
Or is there something *else* creating that connection?

Your description still requires the QCoreApplication object to be created 
before the fork. It doesn't matter that you're going to close that open and 
open a new one after the fork: it's still a bad idea. Some Unix operations do 
not survive forks, like creation of threads. If you do that, I'm pretty sure 
QProcess will be irreparably broken.
-- 
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
   Software Architect - Intel Open Source Technology Center
      PGP/GPG: 0x6EF45358; fingerprint:
      E067 918B B660 DBD1 105C  966C 33F5 F005 6EF4 5358

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to