3 回答

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊
有一種使用內(nèi)存作為FILE描述符的POSIX方法:fmemopen或open_memstream,具體取決于您要使用的語義:fmemopen和open_memstream之間的區(qū)別

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超21個(gè)贊
我猜正確的答案是凱文。但是這里有一個(gè)使用FILE *的技巧。請注意,如果緩沖區(qū)大?。ù颂帪?00000)太小,則會(huì)丟失數(shù)據(jù),因?yàn)樗⑿戮彌_區(qū)時(shí)會(huì)將其寫出。另外,如果程序調(diào)用fflush(),則會(huì)丟失數(shù)據(jù)。
#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]);
}
}

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊
我寫了一個(gè)簡單的示例,說明如何創(chuàng)建內(nè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("");
}
- 3 回答
- 0 關(guān)注
- 949 瀏覽
添加回答
舉報(bào)