Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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
多个Java可执行文件启动相同的应用程序,但不同的程序段_Java_Sockets_Process - Fatal编程技术网

多个Java可执行文件启动相同的应用程序,但不同的程序段

多个Java可执行文件启动相同的应用程序,但不同的程序段,java,sockets,process,Java,Sockets,Process,我想不出这个好名字,但基本上我想做的是LibreOffice之类的东西。我相信这对许多其他应用程序(Firefox、Gimp)都是一样的。所以它的作用是,你有多个可执行文件,比如说文字处理器和电子表格。当您启动Writer(LibreOffice文字处理器)时,它会启动应用程序;当您启动Calc(LibreOffice电子表格)时,它会与Writer一起标记,并打开另一个窗口,其中包含用于编辑电子表格的不同布局。这一切都在一个过程中,soffice.bin。每次打开LibreOffice的另一个

我想不出这个好名字,但基本上我想做的是LibreOffice之类的东西。我相信这对许多其他应用程序(Firefox、Gimp)都是一样的。所以它的作用是,你有多个可执行文件,比如说文字处理器和电子表格。当您启动Writer(LibreOffice文字处理器)时,它会启动应用程序;当您启动Calc(LibreOffice电子表格)时,它会与Writer一起标记,并打开另一个窗口,其中包含用于编辑电子表格的不同布局。这一切都在一个过程中,
soffice.bin
。每次打开LibreOffice的另一个部分或另一个Writer窗口时,都不会得到更多的进程,只有窗口。与Gimp相同的是,启动另一个实例,只需关注当前实例,不同的概念,但基本上是相同的。这可能与移动设备有关,启动该应用程序只会让开放应用程序成为关注焦点,尽管我认为这是操作系统代码所做的

我正试图用Java实现这一点。我在想一个锁文件,然后是某种套接字连接来进行通信。假设Writer打开了,您打开了Calc,它说,“嘿,lock文件被锁定了,让我们打开一个套接字,告诉Writer我想要一个Calc窗口”。很明显,Writer是不开放的,这是主要的过程,但你明白了


注意,我不希望它只是“我的另一个实例已经存在,
System.exit(0)
”,而是“我的另一个实例已经存在,嘿,其他实例,创建另一个窗口!
System.exit(0)

听起来你已经知道你想要做什么了。第一个进程创建一个锁文件并侦听套接字。第二个进程看到锁文件并在套接字上发送消息。第一个进程获取消息并创建一个新窗口。如果您想变得更聪明,可以将端口号写入锁文件。其他应用程序是如何做到这一点的?使用
ps
检查另一个进程,然后使用一些本机内容进行通信?或者他们对文件锁和套接字连接做同样的事情。我想确保这不会导致性能问题,也要确保它是稳定的,可以在所有平台上工作。使用任务管理或eclipse的killJava按钮杀死java会使文件保持锁定吗?哪些操作系统对开放端口有限制?多个进程到底有什么问题?@bayou.io如果它们需要进行大量通信,或者可以作为一个整体更轻松地编写代码。例如,我正在尝试编写一个完整的软件包,该软件包可以完成电子邮件、日历、照片、联系人管理等所有功能。日历将包含事件,事件将包含人员,这对与联系人集成非常有用。电子邮件会有联系人。照片中的人物与日历事件相关。因为所有东西都可以协同工作,所以使用相同的后端并同时保存文件是有意义的,而不是让所有应用程序同时运行。