| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5270 人关注过本帖, 1 人收藏
标题:共享内存实现进程间通信
取消只看楼主 加入收藏
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
结帖率:94.72%
收藏(1)
已结贴  问题点数:8 回复次数:9 
共享内存实现进程间通信
程序代码:
#include <windows.h>
#include <stdio.h>

int main()
{
    int handle = 0xFFFFFFFFFFFFFFFF;
    void* handle2 = INVALID_HANDLE_VALUE;

    // Create a paging file-backed MMF to contain the edit control text.
    // The MMF is 4 KB at most and is named MMFSharedData.
    static HANDLE s_hFileMap = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 4 * 1024, ("MMFSharedData"));

    if (s_hFileMap != NULL) {

        if (GetLastError() == ERROR_ALREADY_EXISTS) {
            puts("Mapping already exists - not created.");
            CloseHandle(s_hFileMap);

            // See if a memory-mapped file named MMFSharedData already exists.
            HANDLE hFileMapT = OpenFileMapping(FILE_MAP_READ | FILE_MAP_WRITE,
                FALSE, TEXT("MMFSharedData"));

            if (hFileMapT != NULL) {
                // The MMF does exist, map it into the process's address space.
                PVOID pView = MapViewOfFile(hFileMapT, 
                    FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0);

                if (pView != NULL) {

                    // Put the contents of the MMF into the edit control.
                    puts((PTSTR) pView);
                    UnmapViewOfFile(pView);
                } else {
                    puts("Can't map view.");
                }

                CloseHandle(hFileMapT);

            } else {
                puts("Can't open mapping.");
            }

        } else {

            // File mapping created successfully.

            // Map a view of the file into the address space.
            PVOID pView = MapViewOfFile(s_hFileMap,
                FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0);

            if (pView != NULL) {
                // Put edit text into the MMF.
                sprintf((char*)pView, "%s", "Some test data");
            
                // Protect the MMF storage by unmapping it.
                UnmapViewOfFile(pView);
            } else {
                puts("Can't map view of file.");
            }
        }

    } else {
        puts("Can't create file mapping.");
    }

    return 0;
}


[此贴子已经被作者于2016-1-28 10:16编辑过]

搜索更多相关主题的帖子: contain control Create 通信 
2016-01-11 11:26
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 4楼 beyondyf
我以为你只会算法,没想到你会的还挺多的

我就是真命天子,顺我者生,逆我者死!
2016-01-11 18:30
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 6楼 beyondyf
你看过 《windows核心编程》 ?

我就是真命天子,顺我者生,逆我者死!
2016-01-11 19:22
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
就你那几行所谓的算法代码有技术含量

我就是真命天子,顺我者生,逆我者死!
2016-01-11 19:29
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
说的是你自己吧,你没看过 《windows核心编程》,你怎么会共享内存
随用随取,靠想像写代码,懒的听你扯淡

我就是真命天子,顺我者生,逆我者死!
2016-01-11 19:37
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
我理解你说的随用随取,因为你永远不会用到。

我就是真命天子,顺我者生,逆我者死!
2016-01-11 19:45
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
所以我说你是靠想像写代码,我告诉你是哪本书,是《UNIX网络编程卷2: 进程间通信》。
你以为你会了unix的共享内存,就以为会了windows的共享内存。先不说函数名种不一样,就是参数数量和含义都不一样,怎么能做到随取随用呢?
你以为你会了unix的共享内存就够了吗?那怎么写跨平台的代码呢?

你怎么知道windows的共享内存在哪里有技术详解?是从哪里取得?
你怎么知道下面这个函数每个参数是什么意思?为什么要这样用?应该注意些什么?
CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 4 * 1024, ("MMFSharedData"));



[此贴子已经被作者于2016-1-11 20:14编辑过]


我就是真命天子,顺我者生,逆我者死!
2016-01-11 20:02
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
你还是同情你自己吧,祝福还是送给你自己。

我就是真命天子,顺我者生,逆我者死!
2016-01-11 20:21
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
我看你是想多了,我只是分享了积木,并不是用积木打动别人

我就是真命天子,顺我者生,逆我者死!
2016-01-11 20:58
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
我分享一段代码,下面没有留任何文字,你是怎么判断我是来炫耀的?

我就是真命天子,顺我者生,逆我者死!
2016-01-11 21:02
快速回复:共享内存实现进程间通信
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.084601 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved