パイプを使用して発生したメインgtkスレッド(別のスレッドから)に通知しようとしています。私はパイプをセットアップしようとしているときに次の警告を受け取ります。良い回避策とは何ですか?パイプ(ハンドラ)を2003年のfdに変換中にエラーが発生しました
私はこのg_io_channel_win32_new_fdが、私はこの警告を見ることができるので、パイプは全て:(
のGLib-WARNING **で作成されていない場合:giowin32.c:1564:3は、Cライブラリではありませんファイルディスクリプタ
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);
}
目標は何かがスレッドのスレッドで発生した主なアプリケーションに通知することです。私の場合、私は(生成されたものからメインスレッドの関数を呼び出す)マルチスレッドの方法でGTKを使用することはできません、パイプでやろうとしています。
私はまたこれが視覚的なスタジオの問題かもしれないことを見たthread
何か提案がありますか?
ありがとう、私は理解しています - あなたは回避策として何をお勧めしますか? – vehomzzz