【问题标题】:How to cross-platform port unix pipes?如何跨平台端口 unix 管道?
【发布时间】: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


【解决方案1】:

我会公开上层功能而不是管道本身。在 unix 上,较低级别的库代码将使用管道,但在其他一些机器上它可以使用不同的机制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 2012-03-12
    相关资源
    最近更新 更多