tbe*_*ert 64
有一种POSIX方式可以将内存用作FILE描述符:fmemopen或者open_memstream,根据你想要的语义:fmemopen和open_memstream之间的区别
Ant*_*ima 21
我想正确的答案是凯文.但这是用文件*做的黑客攻击.请注意,如果缓冲区大小(此处为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]);
}
}
Run Code Online (Sandbox Code Playgroud)
我写了一个简单的例子,我将如何创建一个内存文件:
#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("");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35949 次 |
| 最近记录: |