¿Cómo obtener el descriptor de archivo de búfer en memoria?

Si tengo un búfer que contiene los datos de un archivo, ¿cómo puedo obtener un descriptor de archivo? Esta es una pregunta derivada de cómo descomprimir un archivo en la memoria.

Escribí un ejemplo simple de cómo hacer un filedescriptor a un área de memoria:

#include  #include  #include  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(""); } 

Usted no puede A diferencia de C ++, el modelo C del archivo I / O no está abierto a la extensión.