如何在c中的2个进程之间传递整数值

2023-12-09

如何在两个进程之间传递整数值?

例如:
我有 2 个进程:child1 和 child2。 Child1 向 child2 发送一个整数。然后 Child2 会将该值乘以 2 并将其发送回 child1。然后子级 1 将显示该值。

在 Windows 平台上如何用 C 语言实现这一点?有人可以提供一个代码示例来展示如何做到这一点吗?


IPC (or 进程间通信)确实是一个广泛的主题。
您可以使用共享文件、共享内存或信号等。
使用哪一种实际上取决于您并由应用程序的设计决定。

由于您写道您正在使用 Windows,因此这里有一个使用管道的工作示例:

请注意,我将缓冲区视为以空字符结尾的字符串。您可以将其视为数字。

Server:

// Server
#include <stdio.h>
#include <Windows.h>

#define BUFSIZE     (512)
#define PIPENAME    "\\\\.\\pipe\\popeye"

int main(int argc, char **argv)
{
    char msg[] = "You too!";
    char buffer[BUFSIZE];
    DWORD dwNumberOfBytes;
    BOOL bRet = FALSE;
    HANDLE hPipe = INVALID_HANDLE_VALUE;

    hPipe = CreateNamedPipeA(PIPENAME,
        PIPE_ACCESS_DUPLEX,
        PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT,
        PIPE_UNLIMITED_INSTANCES,
        BUFSIZE,
        BUFSIZE,
        0,
        NULL);

    bRet = ConnectNamedPipe(hPipe, NULL);

    bRet = ReadFile(hPipe, buffer, BUFSIZE, &dwNumberOfBytes, NULL);
    printf("receiving: %s\n", buffer);

    bRet = WriteFile(hPipe, msg, strlen(msg)+1, &dwNumberOfBytes, NULL);
    printf("sending: %s\n", msg);

    CloseHandle(hPipe);

    return 0;
}

Client:

// client
#include <stdio.h>
#include <Windows.h>

#define BUFSIZE     (512)
#define PIPENAME    "\\\\.\\pipe\\popeye"

int main(int argc, char **argv)
{
    char msg[] = "You're awesome!";
    char buffer[BUFSIZE];
    DWORD dwNumberOfBytes;

    printf("sending: %s\n", msg);
    CallNamedPipeA(PIPENAME, msg, strlen(msg)+1, buffer, BUFSIZE, &dwNumberOfBytes, NMPWAIT_WAIT_FOREVER);
    printf("receiving: %s\n", buffer);

    return 0;
}

希望有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在c中的2个进程之间传递整数值 的相关文章

  • 嵌入式控制台日志优化

    不久前我曾发过一篇文章this https stackoverflow com questions 25204389 how to get unique values at preprocessing across files关于SO的问题
  • 选择数据结构

    根据需求使用不同的数据结构 但我如何知道应该使用哪种数据结构 我只是想知道如何选择合适的数据结构 谢谢 此流程图适用于 C 中的 STL 但您可以用 C 实现 STL 容器支持的任何数据结构 列表是一个链接列表 Vector是一个动态数组
  • C# 如何更改 windows.forms.listview 中的网格线颜色

    如何更改 windows forms listview 中的网格线颜色 我认为没有办法在不覆盖 Paint Event 的情况下在列表视图上执行此操作 但是 如果您能够切换到网格视图 您可以这样做 this dataGridView1 Gr
  • 为什么对于某些数组 A,sizeof(A) 在函数内不起作用? [复制]

    这个问题在这里已经有答案了 下列 include
  • ASP.NET Core处理JSON反序列化问题

    我想更改 ASP NET Core 中无效 JSON 请求处理的默认行为 我有这个模型 public class Model public Guid Id get set 当我用这个 body 发送这个请求时 Id null 它返回此错误消
  • 格式化具有 X 位小数和 InvariantCulture 的数字?

    我想使用格式化数字ToString CultureInfo InvariantCulture 并且精确到小数点后 5 位 这可以使用ToString N5 我怎样才能同时做这两件事 怎么样使用重载既需要格式又需要文化 http msdn m
  • 分段错误(核心转储)

    当我尝试运行此程序时 出现分段错误 核心转储 它编译完美 但我收到错误 我不知道为什么 我已尝试以所有可能的方式编辑我的代码 但仍然收到此错误 我已经没有主意了 任何帮助都会很棒 谢谢 unsigned short reg NULL int
  • 复制空对象是否涉及访问它

    灵感来自this https stackoverflow com a 48273386 4832499问题 struct E E e E f e Accesses e To access https timsong cpp github i
  • 在 C# 中创建新 List 的这三种方式有什么区别?

    这三种创建新的方式有什么区别List
  • 有效取消引用空指针的规则是什么?

    include
  • 为什么 C# 三元运算符不能与委托一起使用?

    当分支选择函数时 使用三元运算符来选择函数可能是有意义的 但这是不可能的 为什么 public class Demo protected bool branch protected void demo1 protected void dem
  • C++14 中专门用于数组类型的分配器?

    为什么 c 14 中没有 std allocator 的数组模板专门化 当我自己尝试专门化 std allocator 时 我在实现 Construction 和 destroy 方法时遇到了死胡同 是这个原因吗 那么为什么 std all
  • elmah定制提供商及暴露事件

    我想知道如何创建自定义提供程序来存储错误日志 例如 Windows 事件查看器的提供者 如果到目前为止不可能 我还想知道是否有任何可以覆盖的公开事件 以便我可以注入我的代码 获取异常 做任何我想做的事情 我知道 Global asax 中有
  • 如何在C++中从Imagemagick图像获取缓冲区

    我正在使用 ImageMagick 库进行图像处理 我需要加载 bmp 图像 将其转换为 jpeg 将其加载到缓冲区中并通过网络发送 但是 我在 ImageMagick 中找不到任何可以在缓冲区中转换和存储数据的支持函数 我只能写入文件 尝
  • 单元测试依赖注入

    我在用Autofac for IoC 这是我的容器启动器类 其职责是注册依赖项 public class ContainerInit public static IContainer BuildContainer var conFac ne
  • 使用迭代器与索引访问向量元素有什么区别?

    使用迭代器与索引访问向量元素有什么优点 为什么迭代器比索引更好 在索引不可用的情况下 例如 std list 对于 例子 在通用函数接受迭代器的情况下 叫做 编写应该使用的函数模板时 不止一种容器类型 他们的存在是为了创造均匀性在所有容器和
  • 将“列表”项附加到 StringBuilder

    我尝试将项目附加到List
  • 在文本文件中搜索字符串的更快方法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要使用 C 在一组文本文件中搜索一个大约 13 个字符的字符串 文本文件的数量正在变化 范围在 100 1000 之间 文件大小范
  • 在 C++ 中调用函数有多少开销?

    许多文献都谈到使用内联函数来 避免函数调用的开销 但我还没有看到可量化的数据 函数调用的实际开销是多少 即通过内联函数我们可以实现什么样的性能提升 在大多数架构上 成本包括将所有 或部分 或没有 寄存器保存到堆栈 将函数参数推送到堆栈 或将
  • Dapper 中的自定义映射

    我正在尝试使用带有 Dapper 和多重映射的 CTE 来获取分页结果 我遇到了重复列的不便 例如 CTE 阻止我命名列 我想将以下查询映射到以下对象 而不是列名和属性之间的不匹配 Query WITH TempSites AS SELEC

随机推荐

  • Boost Log 清除日志文件

    我一直在尝试 C 的 Boost Log 库 我的问题是每次程序启动时 日志文件都会被清除 有没有附加选项之类的 这是我的代码的一部分 BOOST LOG INLINE GLOBAL LOGGER DEFAULT my logger src
  • 使用 VB 脚本对字符串和数字进行排序

    如何使用 VB 脚本对带有数值的字符串进行排序 以下是表中每一行的字符串 12 月 2 日测试 1 通过 测试 3 失败 测试 2 于 6 月 4 日通过 已验证 测试10通过 用户已接受 我想在排序后按以下顺序 自然顺序 12 月 2 日
  • Cellfun 与简单 Matlab 循环性能对比

    当我不久前在大学开始使用 matlab 时 如果我的主管看到任何不必要的 for 循环 他就会杀了我 他会要求将其交换为kron或任何可能的索引操作类型 后来 我试图尽可能避免 matlab 上的任何循环 寻找最黑暗的 matlab 编码方
  • 使用 matplotlib.tri.Triangulation 创建在 Matplotlib 的plot_trisurf 中使用的三角剖分

    我是一个尝试使用matplotlib tri Triangulation为 matplotlibs 生成三角形plot trisurf 我想指定三角形而不是让 Delaunay 三角剖分matplotlib tri Triangulatio
  • MySQL 选择特定列

    我是 PHP 新手 我想知道如何从一行中选择特定列 例如 如果我想显示 Joe Bugly 的名字 其中 ID 名字 姓氏和电子邮件都是列 Assuming that you don t want all columns that woul
  • PHP 将 15 分钟添加到时间值

    我有一个接收时间值的表单 selectedTime REQUEST time 时间格式如下 9 15 00 即上午 9 15 然后我需要添加 15 分钟并将其存储在一个单独的变量中 但我被难住了 我尝试使用 strtotime 但没有成功
  • 打开 Apple 地图进行导航并设置目的地名称

    我正在从 Google 的 Places API 获取位置数据 如下面使用的坐标 当从我的应用程序链接到 Apple 地图进行导航时 我当前正在使用 https maps apple com daddr latitude longitude
  • 如何将孙视图渲染到与第一个子视图相同的路由器出口中?

    这是对此的后续问题 Angular 2 辅助路由在 2 1 0 中如何工作 我也尝试过查看这个 但它并没有真正阐明这个问题 如何将子路由渲染到父级的路由出口 如果我有一条父路线 admin其中有一个
  • Php从关联数组中获取键[重复]

    这个问题在这里已经有答案了 我怎样才能从数组中只获取整个第一行 我使用 Laravel 例如当我说 request all 我收到 array 2 email gt email protected password gt adms Wh 我
  • StringBuilder 在 C# 内部如何工作?

    如何StringBuilder work 它有什么作用内部 它使用不安全的代码吗 为什么它这么快 与 操作员 当您使用 运算符构建字符串时 string s 01 s 02 s 03 s 04 然后 在第一次串联时 我们创建一个长度为 4
  • 打印出整个目录树

    我现在拥有的代码 import os Tree Tree os listdir Dir gt gt gt print Tree New Folder Textfile1 txt Textfile2 txt 这不会打印出子目录中的文件 新建文
  • 在运行时使用类型变量创建类型列表[重复]

    这个问题在这里已经有答案了 我试图简化在函数中创建多个变量的方法 这些变量针对不同类型和不同操作重复 最终我将迁移到可以处理多种类型的单个函数 但我是分阶段进行的 我希望能够创建其类型的对象列表而不是列表 而不必在各处复制 粘贴对象类型 我
  • Tcl 中是否有与 C stdlib.h 中的“string to X”函数等效的函数?

    有标准功能 例如atof and atoi in C s stdlib h用于将字符串转换为浮点数 整数 也可以执行相反的操作 Tcl 中是否有类似的功能 或者我是否需要编写自己的流程来执行这些任务 一切都是字符串在 Tcl 中 但是需要数
  • 如何将JFreeChart库添加到JDK?错误:包 org.jfree.chart 不存在

    在获得了一些其他语言的经验后 我开始使用 Java 对于所有这些 我一直在使用 Atom 代码编辑器 所以我已经使用 Java 进行管理 但最近我发现我需要使用外部库 JFreeChart 我使用 JDK 8 在 cmd Windows 上
  • 在 pandas 对象列上调用 `str.len` 时遇到问题

    我有一个 Pandas DataFrame 其中有一个名为的字符串列title我想将每一行的条目转换为该字符串的长度 所以 abcd 将被转换为4 等等 我正在这样做 result df title result df title str
  • SQL WHERE ID IN (id1, id2, ..., idn)

    我需要编写一个查询来检索大量 id 列表 我们确实支持许多后端 MySQL Firebird SQLServer Oracle PostgreSQL 因此我需要编写标准 SQL id 集的大小可能很大 查询将以编程方式生成 那么 最好的方法
  • Python re.sub 问题

    大家好 我不确定这是否可能 但我想在正则表达式替换中使用匹配的组来调用变量 a foo b bar text find a replacement for me a and b desired output find a replaceme
  • 在 SQL 中按分区分组或迭代

    有关 SQL 分区的两部分问题 在 T SQL 中 当您使用 PARTITION BY 时 除了 row number 之类的方法之外 是否还有一种方法可以为每个分区分配唯一的编号 例如 row number 会产生 Action Time
  • android 中的可绘制文本与左对齐

    I am new to custom view and didn t know much about canvas in android I wanted to align a left drawable to right side of
  • 如何在c中的2个进程之间传递整数值

    如何在两个进程之间传递整数值 例如 我有 2 个进程 child1 和 child2 Child1 向 child2 发送一个整数 然后 Child2 会将该值乘以 2 并将其发送回 child1 然后子级 1 将显示该值 在 Window