标签: ipc

C++和Python之间的简单IPC(跨平台)

我有一个在后台运行的C++进程,它将不经常生成'事件',以便在同一个盒子上运行的Python进程需要获取.

  • C端的代码需要尽可能轻量级.
  • Python端是只读的.
  • 实施必须是跨平台的.
  • 发送的数据非常简单.

我有什么选择?

谢谢

c++ python cross-platform ipc

33
推荐指数
3
解决办法
3万
查看次数

如何与Windows服务进行通信?

我想创建一个Windows服务,验证数据并从另一个Windows应用程序访问它,但我是新的服务,我不知道如何开始.

因此,在服务运行时,Windows应用程序应以某种方式连接到服务,发送一些数据并获得响应,无论是真还是假.

c# windows-services ipc

32
推荐指数
3
解决办法
5万
查看次数

C/Unix中的Socketpair()

我在同一系统上有2个应用程序,我需要来回通信.根据我的研究,我认为这称为Inter Process Communication,使用socketpair()是解决我问题的最佳方法.

我正在撕裂我的头发(字面意思)试图开始在C中创建带socketpair()的套接字.根据我的理解,套接字是一个非常复杂的主题,我是一个新手C程序员肯定无法帮助这种情况.

我用谷歌搜索过去48小时,阅读教程等,但我仍然无法得到它.我理解这个概念,但代码太混乱了.我已经读了几遍这篇文章:http://beej.us/guide/bgnet/html/single/bgnet.html,但这还不够简单.

有人可以提供一些例子(如此简单的五年级学生可以理解)或指向我一个很好的教程?

c unix sockets ipc

29
推荐指数
2
解决办法
3万
查看次数

何时使用管道与何时使用共享内存

我正在阅读各种IPC机制.我试图弄清楚场景,我们使用共享内存和我们使用命名管道(FIFO)的地方.

管道:多个进程可以写入,但只有一个进程可以读取.写操作是原子的.

共享内存:多个进程可以读写.并且用户还需要提供互斥以进行读写.

这是共享内存和管道应用的唯一区别吗?

linux ipc pipe shared-memory

27
推荐指数
1
解决办法
3万
查看次数

Thread中的异常:必须是序列,而不是实例

我正在研究python,我试图执行一个带有1个参数"q"的线程,但是当我试图执行它时会发生一个奇怪的异常,这是我的代码:

class Workspace(QMainWindow, Ui_MainWindow):
    """ This class is for managing the whole GUI `Workspace'.
        Currently a Workspace is similar to a MainWindow
    """

    def __init__(self):

        try:
            from Queue import Queue, Empty
        except ImportError:
    #from queue import Queue, Empty  # python 3.x
            print "error"

        ON_POSIX = 'posix' in sys.builtin_module_names

        def enqueue_output(out, queue):
            for line in iter(out.readline, b''):
                queue.put(line)
            out.close()

        p= Popen(["java -Xmx256m -jar bin/HelloWorld.jar"],cwd=r'/home/karen/sphinx4-1.0beta5-src/sphinx4-1.0beta5/',stdout=PIPE, shell=True, bufsize= 4024)
        q = Queue()

        t = threading.Thread(target=enqueue_output, args=(p.stdout, q))
        #t = Thread(target=enqueue_output, args=(p.stdout, q))

        t.daemon …
Run Code Online (Sandbox Code Playgroud)

python multithreading ipc

27
推荐指数
1
解决办法
1万
查看次数

在Mac OS X上进行进程间通信的最佳方法

我正在寻找在Mac上构建一个带有后端守护程序进程的Cocoa应用程序(可能只是一个大多数无头的Cocoa应用程序),以及在本地运行的0个或更多"客户端"应用程序(尽管我可能会这样做)也支持远程客户端;远程客户端只能是其他Mac或iPhone OS设备).

传递的数据将是相当简单的,大多数只是文本和命令(我猜想无论如何都可以表示为文本),也可能是偶尔的小文件(可能是图像).

我已经看了几个方法,但是我不确定哪个方法对于手头的任务来说"最好".我考虑过的事情:

  • 读取和写入文件(...是),非常基本但不是很可扩展.
  • 纯套接字(我没有套接字的经验,但我似乎认为我可以使用它们在本地和网络上发送数据.虽然在Cocoa中做一切似乎很麻烦
  • 分布式对象:对于像这样的任务来说似乎相当不优雅
  • NSConnection:我无法弄清楚这个类甚至做了什么,但我已经在一些IPC搜索结果中读到了它

我确信有些东西我不见了,但我很惊讶地发现这个话题缺乏资源.

sockets networking cocoa ipc nsconnection

26
推荐指数
3
解决办法
1万
查看次数

高效的Python到Python IPC

什么是具有以下要求的进程间通信(IPC)框架\技术:

  • 在两个Python进程之间传输本机Python对象
  • 高效的时间和CPU(RAM效率无关)
  • 跨平台Win\Linux
  • 很高兴:与PyPy合作

更新1:进程位于同一主机上,并使用相同版本的Python和其他模块

更新2:进程由用户独立运行,其中没有一个产生其他进程

python ipc inter-process-communicat

26
推荐指数
5
解决办法
3万
查看次数

如何在Perl脚本中运行Perl脚本?

我有一个需要执行另一个Perl脚本的Perl脚本.第二个脚本可以直接在命令行上执行,但我需要在第一个程序中执行它.我需要传递一些参数,这些参数通常在它独立运行时传递(第一个脚本定期运行,并在一组系统条件下执行第二个脚本).

Google的初步搜索建议使用反引号或system()调用.有没有其他方法来运行它?(我猜是的,因为它是我们正在讨论的Perl:P)如果我需要从被调用的程序中捕获输出,那么首选哪种方法(如果可能的话,将输出管道输出到stdout,就像第二次一样程序被直接调用)?

(编辑:哦,现在 SO提出了一些相关问题.这个问题很接近,但与我提出的问题并不完全相同.第二个程序可能需要一个小时或更长时间才能运行(大量I/O),所以我不确定一次性调用是否适合这种情况.)

perl ipc

25
推荐指数
7
解决办法
8万
查看次数

如何在同一设备上运行的Android应用程序之间传输文件?

我正在编写一个与RESTful服务接口的Android应用程序.此Web服务基本上是文件系统的前端,并提供元数据以及对文件的CRUD访问.我的应用程序检索元数据,并通过a将其公开给第三方应用程序ContentProvider.

我需要添加第三方应用程序的能力,在与我的应用程序相同的设备上运行,通过向我的应用程序发送请求(而不是直接与服务器)来CRUD实际文件.这意味着他们需要通过我的应用程序发送或接收文件的内容(通常是XML或图像).

我想到了实现这个的两种方法:

选项1 - 使用ContentProvider.openFile

这似乎是让第三方应用程序能够从我的文件中读取文件的明显选择ContentProvider.我认为当这些应用程序需要通过我的`ContentProvider'创建或更新文件时,它开始变得棘手.完成后我需要回调才能知道何时将新的/更改的文件发送回服务器.我相信我可以为此目的使用FileObserver.

选项2 - 通过服务使用Messenger

通过这种方法,我可以通过应用程序和客户端应用程序之间的文件发送Messenger.该文件必须通过一个传递Bundle,所以我不知道什么是最好的格式是发送它们(File,FileDescriptor,字节数组,别的东西?).如果文件变得很大,我不能很好地处理这会导致问题.

选项3 - 混合方法

  1. 将外部存储上的文件夹用作下拉框
  2. 通过Messenger/ 传递CRUD请求和删除框内容Service
  3. 使用它ContentProvider来存储请求的状态
  4. 第三方应用通过a接收状态更新 ContentObserver

摘要

我认为使用ContentProvider将是理想的解决方案,但似乎API并不完全支持我的用例.我担心尝试沿着这条路走下去可能会导致一个愚蠢的实施.如果我采用MessengerService接近,我不确定通过a传输文件的最强大的方法Bundle.

混合方法似乎非常强大,但实现起来最复杂.文件实际上并没有被传递,因此性能应该很好.但是,我担心这会过度设计解决方案.

在同一Android设备上运行的应用程序之间传输文件的最佳方法是什么? 当然,我对我在问题中没有概述的其他选项持开放态度.

android ipc android-service android-contentprovider

25
推荐指数
1
解决办法
4549
查看次数

为什么可以将布尔数组写入parcel而不是布尔值?

在Parcel的文档中,它声明了一种方法

public final void writeBooleanArray (boolean[] val) 
Run Code Online (Sandbox Code Playgroud)

但是没有办法 writeBoolean(boolean val)

还存在:

public final void writeLong (long val)

public final void writeLongArray (long[] val)
Run Code Online (Sandbox Code Playgroud)

因此,类似的模式可用于其他原始类型.

有人可以解释为什么会这样吗?

java android ipc parcelable android-activity

25
推荐指数
1
解决办法
4779
查看次数