`
snake_hand
  • 浏览: 574988 次
社区版块
存档分类
最新评论

fmemopen, open_memstream, open_wmemstream

 
阅读更多

NAME

 fmemopen, open_memstream, open_wmemstream -  open memory as stream

SYNOPSIS

       #include <stdio.h>

       FILE *fmemopen(void *buf, size_t size, const char *mode);

       FILE *open_memstream(char **ptr, size_t *sizeloc);

       #include <wchar.h>

       FILE *open_wmemstream(wchar_t **ptr, size_t *sizeloc);

       fmemopen(), open_memstream(), open_wmemstream():
           Since glibc 2.10:
               _XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L
           Before glibc 2.10:
               _GNU_SOURCE
RETURN VALUE     
       Upon successful completion fmemopen(), open_memstream() and open_wmemstream()
       return a FILE pointer.  Otherwise, NULL is returned and errno is set to
       indicate the error.
VERSIONS
       fmemopen() and open_memstream() were already available in glibc 1.0.x.
       open_wmemstream() is available since glibc 2.4.

Program source

       #define _GNU_SOURCE
       #include <string.h>
       #include <stdio.h>
       #include <stdlib.h>

       #define handle_error(msg) /
           do { perror(msg); exit(EXIT_FAILURE); } while (0)

       int
       main(int argc, char *argv[])
       {
           FILE *out, *in;
           int v, s;
           size_t size;
           char *ptr;

           if (argc != 2) {
            fprintf(stderr, "Usage: %s <file>/n", argv[0]);
            exit(EXIT_FAILURE);
           }

           in = fmemopen(argv[1], strlen(argv[1]), "r");
           if (in == NULL)
               handle_error("fmemopen");

           out = open_memstream(&ptr, &size);
           if (out == NULL)
               handle_error("open_memstream");

           for (;;) {
               s = fscanf(in, "%d", &v);
               if (s <= 0)
                   break;

               s = fprintf(out, "%d ", v * v);
               if (s == -1)
                   handle_error("fprintf");
           }
           fclose(in);
           fclose(out);
           printf("size=%ld; ptr=%s/n", (long) size, ptr);
           free(ptr);
           exit(EXIT_SUCCESS);
       }
Ref: http://www.kernel.org/doc/man-pages/online/pages/man3/fmemopen.3.html
Home: http://www.kernel.org/doc/man-pages/index.html
分享到:
评论

相关推荐

    MMTools控件的demo例子,包含从TMemoryStream内存流,资源中播放MP3

    MMTools控件的demo例子,包含从TMemoryStream内存流,资源中加载mp3。具体例子在\mpeg\memstream中

    mem-stream:创建内存信息流

    memStream . pipe ( process . stdout ) ; // {"heapUsed":2719192,"heapTotal":7195904,"heapPercent":0.3778805275890284,"freeMem":9306.43968} // {"heapUsed":3080016,"heapTotal":7195904,"heapPercent":0....

    图片上传并按比例缩小

    oImg.Save(MemStream, GetImageType(strContentType)); MemStream.WriteTo(Response.OutputStream); } } } &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#ff0000 size=4&gt;&lt;/FONT&gt;&lt;FONT size=4&gt;功能: 1。把图片文件(JPG ...

    libmemstream:该库为OS X提供POSIX动态内存缓冲区流功能

    libmemstream libmemstream是OS X的动态内存缓冲区流功能(即 , 和 )的实现。 源代码是基于在的 。 建造 要构建该库,只需从项目的根目录运行./build即可。 这将在output子目录中...API的手册页是memstream(3) 。

    KISDJ语音聊天

    本程序,实现一个简单的语音聊天功能,将麦克风采集到的音频数据经G711压缩后,通过UDP协议传输。在本文中 不讨论如何通过麦克风采集音频数据,也不讨论G711压缩的细节,相关内容可以查看文章后参考文献的内容。...

    node-memorystream:这是 node.js 的轻量级内存流模块

    原始模块在这里 git://github.com/ollym/memstream.git 被重新制作和改进。 安装 如果你安装了 npm,你可以简单地输入: npm install memorystream 或者您可以使用 git 命令克隆此存储库: git clone git://...

Global site tag (gtag.js) - Google Analytics