代码之家  ›  专栏  ›  技术社区  ›  solotim

如何在内存中获取缓冲区的文件描述符?

c
  •  13
  • solotim  · 技术社区  · 17 年前

    这是一个源于 how to untar file in memory

    3 回复  |  直到 9 年前
        1
  •  16
  •   sambowry    17 年前

    我写了一个简单的示例,说明如何将filedescriptor添加到内存区域:

    #include <unistd.h>
    #include <stdio.h> 
    #include <string.h> 
    
    char buff[]="qwer\nasdf\n";
    
    int main(){
      int p[2]; pipe(p);
    
      if( !fork() ){
        for( int buffsize=strlen(buff), len=0; buffsize>len; )
          len+=write( p[1], buff+len, buffsize-len );
        return 0;
      }
    
      close(p[1]);
      FILE *f = fdopen( p[0], "r" );
      char buff[100];
      while( fgets(buff,100,f) ){
        printf("from child: '%s'\n", buff );
      }
      puts("");
    }
    
        2
  •  4
  •   Mecki    7 年前

    FILE * 句柄和这些句柄只能使用 fopen() 和 freopen()

    fmemopen() :

    char dataInMemory[] = "This is some data in memory";
    FILE * fileDescriptor = fmemopen(dataInMemory, sizeof(dataInMemory), "r");
    

        3
  •  0
  •   MSalters    17 年前

    你不能。与C++不同,文件I/O的C模型不允许扩展。