Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在两个独立的程序之间传递信息 我想在程序中传递一个输入变量的值,让它把第1个字表示给另一个程序2,并且我希望2号把它所要的数据打印到屏幕上,这两个都需要用C++编写。这将在Linux上实现。_C++_Linux_Ipc - Fatal编程技术网

在两个独立的程序之间传递信息 我想在程序中传递一个输入变量的值,让它把第1个字表示给另一个程序2,并且我希望2号把它所要的数据打印到屏幕上,这两个都需要用C++编写。这将在Linux上实现。

在两个独立的程序之间传递信息 我想在程序中传递一个输入变量的值,让它把第1个字表示给另一个程序2,并且我希望2号把它所要的数据打印到屏幕上,这两个都需要用C++编写。这将在Linux上实现。,c++,linux,ipc,C++,Linux,Ipc,根据平台的不同,有许多选项可用。您试图做的通常称为进程间通信(IPC) 一些选择包括: 插座 管道 排队 共享内存 最简单的可能取决于您所使用的平台。根据平台的不同,有许多选项可用。您试图做的通常称为进程间通信(IPC) 一些选择包括: 插座 管道 排队 共享内存 最简单的方法可能取决于您使用的平台。如果效率不是主要问题,则使用普通文件i/o 否则就请IPC这样做 就Windows而言,您有以下选项: 剪贴板, 通用域名格式, 数据副本, DDE, 文件映射, 邮箱, 管, RPC, W

根据平台的不同,有许多选项可用。您试图做的通常称为进程间通信(IPC)

一些选择包括:

  • 插座
  • 管道
  • 排队
  • 共享内存

最简单的可能取决于您所使用的平台。

根据平台的不同,有许多选项可用。您试图做的通常称为进程间通信(IPC)

一些选择包括:

  • 插座
  • 管道
  • 排队
  • 共享内存

最简单的方法可能取决于您使用的平台。

如果效率不是主要问题,则使用普通文件i/o

否则就请IPC这样做

就Windows而言,您有以下选项:

剪贴板, 通用域名格式, 数据副本, DDE, 文件映射, 邮箱, 管, RPC, Windows套接字


对于Linux,use可以使用命名管道(高效)或套接字,如果效率不是主要问题,则使用普通文件i/o

否则就请IPC这样做

就Windows而言,您有以下选项:

剪贴板, 通用域名格式, 数据副本, DDE, 文件映射, 邮箱, 管, RPC, Windows套接字


对于Linux,use可以使用命名管道(高效)或套接字(sockets一如往常,有一个(上帝,我喜欢Boost)。

一如往常,有一个(上帝,我喜欢Boost)。

如果你在Windows上,你可以使用Microsoft消息队列。这是前面提到的队列示例。

如果您使用的是Windows,则可以使用Microsoft消息队列。这是前面提到的队列示例。

Nic已经涵盖了我想提到的所有4个(在同一台机器上):

  • 插座
  • 管道
  • 排队
  • 共享内存
如果编写系统调用对您来说很麻烦,您可能需要使用以下库:

  • 促进
  • 波科
  • 诺基亚Qt

  • 您可以从Nic上读到的内容涵盖了我想提及的所有4项(在同一台机器上):

    • 插座
    • 管道
    • 排队
    • 共享内存
    如果编写系统调用对您来说很麻烦,您可能需要使用以下库:

  • 促进
  • 波科
  • 诺基亚Qt

  • 如果要传递的数据只是一个变量,您可以从中读取,那么选项之一是通过程序1将其设置为环境变量[Var1],并在程序2中访问它[如果两者都在同一个环境/机器上运行]。通过使用IPC/socket等,这将是最简单的方法,而不是使其复杂化。

    如果要传递的数据只是一个变量,那么其中一个选项是通过程序1将其设置为环境变量[Var1],并在程序2中访问它[如果两者都在同一个环境/机器上运行]。我想这将是最简单的一个,而不是通过使用IPC/socket等使其复杂化。

    我认为大多数答案都解决了常见的IPC机制。我想补充一点,我可能会选择套接字,因为它是跨多个平台的最标准的。当我需要在Symbian 60系列和Windows Mobile上实现IPC时,我决定这样做


    该范例非常简单,除了一些平台故障外,该模型对两个平台的工作原理相同。我还建议使用协议缓冲区来格式化发送的数据。谷歌在其基础设施中大量使用了这一点

    我认为大多数答案都提到了常见的IPC机制。我想补充一点,我可能会选择套接字,因为它是跨多个平台的最标准的。当我需要在Symbian 60系列和Windows Mobile上实现IPC时,我决定这样做

    该范例非常简单,除了一些平台故障外,该模型对两个平台的工作原理相同。我还建议使用协议缓冲区来格式化发送的数据。谷歌在其基础设施中大量使用了这一点

    • DBUS
    • QtDbus
    • DBus-mm
        • DBUS
        • QtDbus
        • DBus-mm

        针对您对Roopesh Majeti回答的评论,这里有一个使用环境变量的非常简单的示例:

        第一个方案:

        // p1.cpp - set the variable
        #include <cstdlib>
        using namespace std;;    
        int main() {
            _putenv( "MYVAR=foobar" );
            system( "p2.exe" );
        }
        
        //p1.cpp-设置变量
        #包括
        使用名称空间std;;
        int main(){
        _putenv(“MYVAR=foobar”);
        系统(“p2.exe”);
        }
        
        第二个方案:

        // p2.cpp - read the variable
        #include <cstdlib>
        #include <iostream>
        using namespace std;;
        
        int main() {
            char * p = getenv( "MYVAR" );
            if ( p == 0 ) {
                cout << "Not set" << endl;
            }
            else {
                cout << "Value: " << p << endl;
            }
        }
        
        //p2.cpp-读取变量
        #包括
        #包括
        使用名称空间std;;
        int main(){
        char*p=getenv(“MYVAR”);
        如果(p==0){
        
        cout针对您对Roopesh Majeti回答的评论,这里有一个使用环境变量的非常简单的示例:

        第一个方案:

        // p1.cpp - set the variable
        #include <cstdlib>
        using namespace std;;    
        int main() {
            _putenv( "MYVAR=foobar" );
            system( "p2.exe" );
        }
        
        //p1.cpp-设置变量
        #包括
        使用名称空间std;;
        int main(){
        _putenv(“MYVAR=foobar”);
        系统(“p2.exe”);
        }
        
        第二个方案:

        // p2.cpp - read the variable
        #include <cstdlib>
        #include <iostream>
        using namespace std;;
        
        int main() {
            char * p = getenv( "MYVAR" );
            if ( p == 0 ) {
                cout << "Not set" << endl;
            }
            else {
                cout << "Value: " << p << endl;
            }
        }
        
        //p2.cpp-读取变量
        #包括
        #包括
        使用名称空间std;;
        int main(){
        char*p=getenv(“MYVAR”);
        如果(p==0){
        
        这就是IPC(进程间通信)的作用:)@cadthecoder对于这样的问题,你应该经常提到你所在的平台。从你的评论中,我看到你提到了Linux,所以我相应地给它贴上了标签——将来,请你自己做。当然我是新来的,但我会记住这一点。这就是IPC(进程间通信)用于:)@cadthecoder