2014-01-15 14 views
2

我创建一个命名管道文件,如下所示:在Windows上存储了一个命名的管道文件?

void SavePipeFile(){ 


    HANDLE hpipe; 
    BOOL bRet; 
    DWORD size; 

    hpipe = 
     CreateNamedPipe(
     L"\\\\.\\pipe\\mypipe", 
     PIPE_ACCESS_OUTBOUND, 
     PIPE_TYPE_BYTE, 
     1, 
     0, 
     0, 
     0, 
     NULL 
     ); 
    if(hpipe == NULL || hpipe==INVALID_HANDLE_VALUE) 
    { 
     printf("Error opening handle\n"); 
    } 

    CloseHandle(hpipe); 


} 

功能存在OK,没errors.But我找不到system.Does Windows API中的物理文件“mypipe”将其保存到一个具体位置?在Windows 7 64bit上运行

+0

您创建了*命名管道*,而不是*命名管道文件*。我不知道为什么要创建一个管道并期望获得一个文件。毕竟,您必须非常明确地需要实际创建一个命名管道。这不是你意外实施的。 – IInspectable

+0

我想要一个文件,因为我需要指定它的位置到需要读取它的外部应用程序。在Linux上,我可以有一个文件。 –

+0

命名对象由其名称引用。没有要求让一个物理文件通过名称'\\。\ pipe \ mypipe'来引用一个名称管道。 – IInspectable

回答

6

来自http://en.wikipedia.org/wiki/Named_pipe的引用。

与Unix中不同,命名管道不能安装在普通文件系统中。与Unix的不同之处在于,命名管道是不稳定的(在关闭它们的最后一个引用后删除)。每个管道都放置在命名管道文件系统(NPFS)的根目录中,并安装在特殊路径\。\ pipe \下(即,名为“foo”的管道将具有完整路径名称\。\ pipe \ foo )。流水线中使用的匿名管道实际上是具有随机名称的命名管道。