从另一个程序运行程序

Running a program from another program

本文关键字:程序 运行 另一个      更新时间:2023-10-16

我有一个C#程序(称为a),它可以拍摄一张照片并将其转换为一个2d值数组。我还有一个c++(称之为B)程序,它使用这种类型的矩阵作为输入。我想做的是用B编写的代码调用A。我不知道如何为A指定输入(不知道这是否可行)。我找到的唯一解决方案是有一个目录,我在其中有照片和一个文件,当a调用它时,它首先被写入并关闭,然后B再次打开并读取它。问题是:有没有一种方法可以为从另一个程序调用的程序提供输入?

有许多方法可以将输入从一个程序传递到另一个程序。

  • 在一个程序中写入一个文件,然后在另一程序中读取
  • 创建一个共享内存区域并将数据存储在那里(例如,在Posix上使用boost::shared_memoryshm_open,在Windows.中使用CreateFileMapping

  • 在一个程序中将数据写入stdout,在另一个程序中从stdin读取数据,并将两个程序通过管道连接在一起。

  • 创建一个管道,将数据写入管道的一端,然后从另一端读取
  • 让一个程序监听套接字,另一个程序向其发送数据
  • 更多

根据使用情况,所有这些都可以,但我会坚持从编写文件开始。这使得分别测试和调试这两个程序变得更加容易。我不使用固定的目录和文件名,而是让a写入一个文件,然后在命令行上用文件名调用B。

最简单的方法是使用管道。在终端中,它看起来像这样:

programA < image | programB