问题标签 [ipc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
2156 浏览

c# - .NET IPC 没有服务中介

我有两个使用 .NET 程序集作为插件的不相关进程。但是,任何一个进程都可以随时启动/停止。我不能依赖特定进程作为服务器。事实上,其中一个进程可能有多个副本在运行,但只有一个副本在运行。

我最初根据这篇文章实施了一个解决方案。但是,这需要实现服务器的服务器在客户端之前运行。

当客户端首先运行时,向服务器实施某种通知的最佳方式是什么?

0 投票
2 回答
1549 浏览

.net - .Net 3.5,在进程之间传递字符串的最安全方式

我希望能够将 SecureString(缓存的密码)传递给 C#(.Net 3.5)中的子进程,但我不知道最安全的方法是什么。例如,如果我将 SecureString 转换回常规字符串并将其作为命令行参数传递,那么我认为该值可能容易出现磁盘分页——这会使明文接触文件系统并破坏要点使用 SecureString。

可以改为传递 SecureString 的 IntPtr 吗?我可以在不增加风险的情况下使用命名管道吗?

0 投票
6 回答
53229 浏览

c# - C# (.NET 2.0) 中 Windows 的进程间通信

我以前从未在 Windows 上进行过 IPC。我正在开发一对程序、一个标准的 GUI/CLI 应用程序和一个 Windows 服务。该应用程序必须告诉服务该做什么。那么,假设通信仅在本地进行,那么这两个进程的最佳通信方法是什么?
最好的意思是更健壮和更不容易出错,不是最好的性能也不是最容易编码的。

注意我问的是使用什么,标准 TCP 套接字、命名管道或其他一些通信方式。

0 投票
3 回答
2887 浏览

windows-vista - 您如何在 Windows Vista 会话 0 和桌面之间进行通信?

在 Vista 之前的早期版本的 Windows 中,您可以让 Windows 服务与当前登录的桌面用户交互,以便在服务的屏幕上轻松显示信息。在 Windows Vista 中,为安全起见,添加了会话 0,以将服务与桌面隔离。在服务和在 Session 0 之外运行的应用程序之间进行通信的简单方法是什么?到目前为止,我已经通过使用 TCP/IP 在两者之间进行通信来解决这个问题,但这似乎是一种草率的方式。

0 投票
6 回答
78431 浏览

c# - C# 中的 IPC 机制 - 用法和最佳实践

前段时间我在 Win32 代码中使用过 IPC - 关键部分、事件和信号量。

.NET 环境中的场景如何?是否有任何教程解释所有可用选项以及何时使用以及为什么?

0 投票
16 回答
48244 浏览

cross-platform - 跨平台工控机

我正在寻找有关可能的 IPC 机制的建议,这些机制是:

  • 跨平台(至少 Win32 和 Linux)
  • C++以及最常见的脚本语言(perl、ruby、python 等)中易于实现。
  • 最后,从编程的角度来看,使用简单!

我的选择是什么?我在 Linux 下编程,但我希望我写的东西将来可以移植到其他操作系统。我考虑过使用套接字、命名管道或 DBus 之类的东西。

0 投票
9 回答
11166 浏览

perl - 如何从 Perl 脚本中捕获系统命令的标准输入和标准输出?

在 Perl 脚本的中间,有一个我要执行的系统命令。我有一个字符串,其中包含需要输入标准输入的数据(该命令只接受来自标准输入的输入),我需要捕获写入标准输出的输出。我已经查看了在 Perl 中执行系统命令的各种方法,并且该open功能似乎是我所需要的,只是看起来我只能捕获标准输入或标准输出,而不是两者。

目前,似乎我最好的解决方案是使用open,将标准输出重定向到一个临时文件,并在命令完成后从文件中读取。有更好的解决方案吗?

0 投票
5 回答
1028 浏览

c - 在 Win32 上停止进程的最干净方法?

在用 C++ 实现应用服务器及其客户端库时,我无法找到一种干净可靠的方法来在 Windows 上的服务器关闭时停止客户端进程。

假设服务器和它的客户端在同一个用户下运行,要求是:

  • 该解决方案应适用于以下情况:
    • 每个客户端都可能具有控制台或 gui。
    • 用户可能没有特权。
    • 客户端可能会或变得无响应(无限循环、死锁)。
    • 客户端可能是也可能不是服务器的孩子(直接或间接)。
  • 除非被客户端缺陷阻止,否则应允许客户端有机会干净地退出(释放他们的资源,将一些数据同步到磁盘......)和一些合理的时间这样做。
  • 在关闭过程中,所有客户端返回代码都应提供给服务器(如果可能)。
  • 服务器将等到所有客户端都消失。

截至本次编辑,以下大多数答案都主张在服务器及其客户端之间使用共享内存(或其他 IPC 机制)来传达关闭命令和客户端状态。这些解决方案可以工作,但需要客户端成功初始化库。

我没有说的是,服务器还用于启动客户端,在某些情况下,其他程序/脚本根本不使用客户端库。不依赖于服务器和客户端之间的优雅通信的解决方案会更好(如果可能的话)。

前段时间,我偶然发现了一个 C 代码片段(我相信在 MSDN 中),它执行了以下操作:

  1. 在进程中通过 CreateRemoteThread 启动一个线程来关闭。
  2. 让那个线程直接调用ExitProcess。

不幸的是,现在我正在寻找它,但我无法找到它,而且搜索结果似乎暗示这个技巧在 Vista 上不再适用。对此有任何专家意见吗?

0 投票
8 回答
89532 浏览

c# - .NET 进程间通信的最佳选择是什么?

我应该使用命名管道还是 .NET Remoting 与我机器上正在运行的进程进行通信?

0 投票
1 回答
3363 浏览

c# - Java 和 .NET 3.5 之间进程间通信的最佳方法是什么?

第三方应用程序从 XML 文件中读取一些 Java 代码,并在某个事件发生时运行它。在 Java 中,我想告诉在同一台机器上运行的 .NET 3.5 应用程序发生了这个事件。每次传输的总数据可能是几个字符。

使用 Java 告诉 .NET 进程发生了什么事的最佳方式是什么?

Java 似乎不支持 Windows 上的命名管道,.NET 本身不支持内存映射,任何涉及 Web 服务或 RMI 的解决方案都是过大的。