-
梦里花落0921
有一种使用内存作为FILE描述符的POSIX方法:fmemopen或open_memstream,具体取决于您要使用的语义:fmemopen和open_memstream之间的区别
-
茅侃侃
我猜正确的答案是凯文。但是这里有一个使用FILE *的技巧。请注意,如果缓冲区大小(此处为100000)太小,则会丢失数据,因为刷新缓冲区时会将其写出。另外,如果程序调用fflush(),则会丢失数据。#include <stdio.h>#include <stdlib.h>int main(int argc, char **argv){ FILE *f = fopen("/dev/null", "w"); int i; int written = 0; char *buf = malloc(100000); setbuffer(f, buf, 100000); for (i = 0; i < 1000; i++) { written += fprintf(f, "Number %d\n", i); } for (i = 0; i < written; i++) { printf("%c", buf[i]); }}
-
狐的传说
我写了一个简单的示例,说明如何创建内存文件:#include <unistd.h> #include <stdio.h> int main(){ int p[2]; pipe(p); FILE *f = fdopen( p[1], "w" ); if( !fork() ){ fprintf( f, "working" ); return 0; } fclose(f); close(p[1]); char buff[100]; int len; while( (len=read(p[0], buff, 100))>0 ) printf(" from child: '%*s'", len, buff ); puts("");}