Ich versuche zu benachrichtigen, einen Haupt-GTK-Thread (aus einem separaten Thread), dass einige sogar mit Pipes aufgetreten sind. Ich bekomme die folgende Warnung, wenn ich versuche, Pipes einzurichten. Was ist eine gute Problemumgehung?Fehler beim Konvertieren einer Pipe (Handler) in fd on vs 2003
, wenn ich diese g_io_channel_win32_new_fd kann ich diese Warnung zu sehen, und somit Rohr durchaus nicht :(
Glib-WARNUNG erstellt **: giowin32.c: 1564: 3 nicht eine C-Bibliothek Dateideskriptors
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);
}
Ziel ist es Hauptanwendung zu informieren, dass etwas in thread Thread aufgetreten ist. in meinem Fall kann ich nicht gtk in Multi-threaded-Art und Weise verwendet (Aufruf von Funktionen des Haupt-Thread von gelaicht eins), also versuche ich es über Rohre zu tun.
Ich sah auch, dass es ein visuelles Studio Problem in diesem thread
sein könnte Irgendwelche Vorschläge?
Danke, das verstehe ich - was würden Sie als Workaround empfehlen? – vehomzzz