IPC_Window_C#

本文整理了Windows环境下,C#语言实现进程间通讯(IPC)的共享内存技术。通过MemoryMappedFile.CreateOrOpen函数创建或打开内存空间,并探讨了如何在C#中实现读写操作,强调了指定读写位置以确保不同进程间交互的逻辑性。
摘要由CSDN通过智能技术生成

之前有文章介绍了一些在Windows环境下,基于C#语言开发实现进程通讯的程序。

下面稍微整理一下,让脉络清晰起来。

**

这个进程通讯(下简称IPC),是为了让同一个电脑两个彼此独立应用程序之间,可以交互数据。

如前文所述,方法很多,我们选取了最牛X的 共享内存技术。

**

共享内存,没有所谓的 服务器和客户端概念。本质上是操作系统从中间撮合,将两个进程产生了通讯,每个应用程序都可以去创建或打开一个共享空间,只要你知道这个共享内存空间的名字即可。

在C#里面用到的函数是:MemoryMappedFile.CreateOrOpen。

它可以向操作系统创建或者打开一个内存空间,然后就可以使用了,需要说明的是,只有当所有的应用程序都不在和这个内存共享空间断绝联系,操作系统才会回收这个共享空间。

**

理论铺垫到此结束,下面进入代码实操。

××下述代码实现读的功能××

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO.MemoryMappedFiles;
using System.Threading;
using System.IO;
 
namespace CSharp共享内存
{
    class Program
    {
        static void Main(string[] args)
        {
            //第一步:让操作系统申请创建/打开一个名为:lipan 的内存空间
        
IPC_CREAT | 0666是一个标志位,用于创建一个新的IPC对象并设置权限为0666。IPC对象是一种用于进程间通信的机制,例如消息队列、共享内存和信号量等。当使用IPC_CREAT标志位时,如果指定的IPC对象不存在,则会创建一个新的对象;如果对象已经存在,则返回已存在的对象的标识符。 0666是一个八进制数,表示权限位。在Linux系统中,权限位用于确定对IPC对象的访问权限。0666表示所有用户都具有读写权限,没有执行权限。具体的权限位含义如下: - 第一位:文件类型,0表示IPC对象 - 后三位:所有者权限,6表示读写权限 - 后三位:所属组权限,6表示读写权限 - 后三位:其他用户权限,6表示读写权限 因此,IPC_CREAT | 0666表示创建一个新的IPC对象,并将权限设置为所有用户都具有读写权限。 范例:<<引用:struct ipc_perm { __kernel_key_t key; __kernel_uid_t uid; __kernel_gid_t gid; __kernel_uid_t cuid; __kernel_gid_t cgid; __kernel_mode_t mode; unsigned short seq; }。引用:struct ipc_perm { __kernel_key_t key; __kernel_uid_t uid; __kernel_gid_t gid; __kernel_uid_t cuid; __kernel_gid_t cgid; __kernel_mode_t mode; unsigned short seq; }。 请回答我或者给我介绍或演示一下:IPC_CREAT | 0666)?>> IPC_CREAT | 0666是一个标志位,用于创建一个新的IPC对象并设置权限为0666。具体的权限位含义如下: - 第一位:文件类型,0表示IPC对象 - 后三位:所有者权限,6表示读写权限 - 后三位:所属组权限,6表示读写权限 - 后三位:其他用户权限,6表示读写权限 这个标志位可以用于创建消息队列、共享内存和信号量等IPC对象,并设置它们的权限为所有用户都具有读写权限。例如,在创建一个新的消息队列时,可以使用IPC_CREAT | 0666标志位来指定权限。 相关问题--: 1. 如何使用IPC_CREAT标志位创建一个新的消息队列? 2. IPC对象的权限如何影响进程对其的访问? 3. 除了0666,还有哪些常用的权限位?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值