【发布时间】:2009-07-27 18:01:21
【问题描述】:
我的代码如下所示:
使用这个库
#include <unistd.h>
#define READ_FD 0
#define WRITE_FD 1
int m_pipe[2];
if(pipe(m_pipe) != -1) {
unsigned long Id = gdk_input_add(m_pipe[READ_FD], GDK_INPUT_READ, Callback, (gpointer)this);
}
它令人惊讶地构建在 linux(所有主要版本:AS3、AS5、solaris)和 windows 上。但是,它根本无法在 Windows 上运行。
应该如何实现使用管道的代码,以便在 windows 和 linux 上都可以使用?
【问题讨论】:
-
“它根本不能在 Windows 上运行”是什么意思?请附上错误信息等
-
呃,我真的可以在它编译和运行时附加它,但是 gtk 从 Windows 上的管道读取时会给出某种哈希消息。
-
“某种散列消息”?不要让我们继续猜测。告诉我们读取的消息,以及指示错误的实际返回值。此外,这甚至不是对
pipe的有效调用。复制并粘贴真正失败的代码。 -
不,这不是真正的代码。
pipe函数接受一个 array 整数,而不仅仅是一个整数。如果你的那行代码不是真实的,我们为什么要认为它的其余部分是真实的?如果您没有错误消息,那么您说 GTK 给您的“散列消息”是什么? -
更具体的问题可以在这里找到:stackoverflow.com/questions/1190184/…
标签: c++ cross-platform gtk pipe unix