作者共发了2篇帖子。 字体大小:较小 - 100% (默认)▼  内容转换:不转换▼
 
点击 回复
252 1
【程序】两个进程通过文件映射共享一块内存
一派护法 十九级
1楼 发表于:2016-3-26 11:52
【程序1】
#include "stdafx.h"
#include <Windows.h>
#include <stdio.h>

void wait(char *str)
{
    char ch;
    do
    {
        while (*str != '\0')
            putchar(*str++);
        ch = getchar();
        fflush(stdin);
    } while (ch != 'y');
}

int _tmain(int argc, _TCHAR* argv[])
{
    HANDLE hMap = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 100, TEXT("Hello World"));
    LPSTR lpStr = (LPSTR)MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 100);
    puts("请输入一段文字: ");
    gets_s(lpStr, 100);

    wait("请输入y显示内存内容: ");
    puts(lpStr);

    wait("请输入y关闭映射: ");
    UnmapViewOfFile(lpStr);
    CloseHandle(hMap);
    return 0;
}
一派护法 十九级
2楼 发表于:2016-3-26 11:52
【程序2】
#include "stdafx.h"
#include <Windows.h>
#include <stdio.h>

void wait(char *str)
{
    char ch;
    do
    {
        while (*str != '\0')
            putchar(*str++);
        ch = getchar();
        fflush(stdin);
    } while (ch != 'y');
}

int _tmain(int argc, _TCHAR* argv[])
{
    HANDLE hMapFile = OpenFileMapping(PAGE_READONLY, FALSE, TEXT("Hello World"));
    if (hMapFile == NULL)
    {
        puts("文件映射不存在");
        return 0;
    }
    LPSTR lpStr = (LPSTR)MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 100);
    puts(lpStr);

    puts("将内容修改为: ");
    gets_s(lpStr, 100);

    UnmapViewOfFile(lpStr);
    CloseHandle(hMapFile);
    return 0;
}

回复帖子

内容:
用户名: 您目前是匿名发表
验证码:
(快捷键:Ctrl+Enter)
 

本帖信息

点击数:252 回复数:1
评论数: ?
作者:巨大八爪鱼
最后回复:巨大八爪鱼
最后回复时间:2016-3-26 11:52
 
©2010-2024 Arslanbar Ver2.0
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。