Frage

Ich versuche, einen Haupt-gtk Thread zu verwenden, benachrichtigt (von einem separaten Thread), dass einige sogar Rohre aufgetreten verwenden. Ich erhalte die folgende Warnung, wenn ich Setup Rohre versuchen. Was ist eine gute Abhilfe?

, wenn ich kann dieses g_io_channel_win32_new_fd, ich sehe diese Warnung, und somit Rohr gar nicht erstellt: (

Glib-WARNING **: giowin32.c: 1564: 3 nicht eine C-Bibliothek Dateideskriptor

    int fds[2];
    GIOChannel* gioChannels[2];
    HANDLE rdPipe, wrPipe;
    SECURITY_ATTRIBUTES saAttr;

    saAttr.nLength = sizeof(SECURITY_ATTRIBUTES); 
    saAttr.bInheritHandle = TRUE; 
    saAttr.lpSecurityDescriptor = NULL;
    if (CreatePipe(&rdPipe, &wrPipe, NULL, 1024)) 
    {
       fds[0]  =_open_osfhandle((gssize)rdPipe,  O_RDONLY); 
       fds[1] = _open_osfhandle((long)wrPipe,_O_APPEND);

       gioChannels[0] =g_io_channel_win32_new_fd(fds[0] );
       gioChannels[1] =g_io_channel_win32_new_fd(fds[0] );

       g_io_add_watch( gioChannels[1],(GIOCondition) (G_IO_IN | G_IO_HUP), 
                        (GIOFunc)SomeCallaback,(gpointer)this );

    }

Das Ziel ist Hauptanwendung zu informieren, dass etwas in thread Thread aufgetreten. In meinem Fall kann ich gtk nicht verwenden in Multi-Threaded-Weg (Aufruf von Funktionen des Haupt-Thread von gelaicht ein), so versuche ich es über Rohre zu tun.

Ich sah auch, dass es sich um eine Visual Studio Ausgabe in dieser sein könnte

scroll top