JAVA进程间通讯

因项目需要现需要制作一监听器监听其他程序运行情况,要求 不能不使用SOCKET通讯 然后我就不知道怎么搞了......有没有高手给点头绪.....

0
lin358
lin358 linux和2003都必须支持 监听程序是否卡死 运行状况倒不是那么强求 只要能知道程序是不是还在动就可以了 不是单纯的查看进程是否存在 要知道程序是不是在工作 程序架构大体是 一个服务器发送指令 N个工作程序执行不同的任务(都是各种专项程序 不过最后只做出一个东西 类似流水线) 然后需要一个监听程序监听是否有某个程序卡死 如果卡死就杀掉进程重新开一个 然后有个变态要求就是不能走网卡....因为网络压力太大......
6 年多之前 回复
jinnianshilongnian
jinnianshilongnian 什么服务器 linux?? 监听什么 运行状况》
6 年多之前 回复

2个回答

1、如果监控机器运行状况 可以通过JMX (本质还是走socket)
2、如果仅仅监控程序是否运行 可以通过系统命令 监控进程是否运行 如linux ps
3、其他:就像我要输出内容到文件 但不允许用文件API。。。 变态

0
jinnianshilongnian
jinnianshilongnian 如果是普通应用 要么开JMS端口 要么socket 要么让这个程序定期写一个文件/数据库 另一个读 要么通过操作系统端口检测工具 要么告诉老板做不到(技术不是万能的。。。。。。)
6 年多之前 回复
jinnianshilongnian
jinnianshilongnian 进程间是无法通信的。 我的需求是制作一个监听程序监控工作程序是否卡死 是web应用吧,如果是可以这样: 1、如果是linux 则 通过如 netstat -ntlp | grep 端口 看看web应用是否挂了 2、在你的web应用下放一个 monitor.jsp 然后 另一个调用 如果200则说明程序是ok的
6 年多之前 回复
lin358
lin358 我的需求是制作一个监听程序监控工作程序是否卡死 然后还不能走网卡通讯 蛋疼 不过3倒是有点感觉 用文件算了 反正烧的不是我的硬盘 哈哈哈哈哈 工作程序也是我自己写的 是否可以放出某种接口?不过我查了一天资料好像JVM间没法通讯....
6 年多之前 回复

加一个文件锁就好了,参考linux的lock文件锁,多个进程去检查一下就好了


偶的小域名,求被收购:http://www.crontable.com

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java进程间通讯机制代码
•socket •RMI远程调用 •共享内存 •管道
Java—进程间通讯的有几种方法
进程间通信的方法主要有以下几种:   (1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。   (2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关 系 进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建
Java--进程间通讯的四种方式
所谓进程通信,就是不同进程之间进行一些"接触",这种接触有简单,也有复杂。机制不同,复杂度也不一样。通信是一个广义上的意义,不仅仅指传递一些massege。     他们的使用方法是基本相同的,所以只要掌握了一种的使用方法,然后记住其他的使用方法就可以了。     1. 信号   在我学习的内容中,主要接触了信号来实现同步的机制,据说信号也可以用来做其它的事情,但是我还不知道做什么。
Handler进程间通信
Handler在线程间通信很常用,进程间通信却用的很少,书中有介绍自己试用了一下,觉得不是很好用,而且底层也是AIDL,也是Binder,其实没差别,还很绕。
java进程间通讯机制代码----RMI、共享内存、Socket、管道
java进程间通讯机制代码----RMI、共享内存、Socket、管道,等方式,每种方法我都讲了原理和例子程序,很有参考意义。在网上很难找到的。
JAVA线程与线程、进程与进程间通信
I.线程与线程间通信 一、多线程间通信方式: 1、共享变量 2、wait/notify机制 3、Lock/Condition机制 二、共享变量 线程间发送信号的一个简单方式是在共享对象的变量里设置信号值。线程A在一个同步块里设置boolean型成员变量hasDataToProcess为true,线程B也在同步块里读取hasDataToProcess这个成员变量。这个简单的例子使用了
java 进程间通讯
两个 java应用程序 怎么进行一些简单的通讯 譬如 一个关闭后 另一个在进行完必要的操作后关闭rn 我先提一个 可以用数据库() 不理想 谁有更好的办法
对java和c语言之中进程间通信的理解
进程间通信: 1 管道: java里是读写管道文件即可。c语言利用mkfifo创建两个管道文 件,java读写管道文件即可。 c语言就是pipe。例子:linux 命令:ps -ef | grep ‘XXX’.解释:ps和grep命令都是一个进程,ps进程的标准输出给了greo进程的标准输入。 2 信号量: java里是wait/n
java如何实现进程间的通信?
先看看传统的进程间通信的手段: (1) 管道(PIPE) (2) 命名管道(FIFO) (3) 信号灯(Semphore) (4) 消息队列(MessageQueue) (5) 共享内存(SharedMemory) (6) Socket(当然也有Socket) 如果加上上面提到的临时文件(临时文件其实是很难处理的,不同的进程间单靠临时文件可以交互信息,但是做到进程的调度控制确是很费力
java 进程间通讯的有几种方法?
进程间通信的方法主要有以下几种:   (1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。   (2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关 系 进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建
linux 进程间通讯方法整理
一.无名管道pipe   #include int pipe(int fd [2]) 二.fifo   #include int mkfifo(const char *path, mode_t mode); 三.信号   #include void (*signal(int sig, void (*func)(int)))(int);   #include
Android 进程间通讯四种方式
android系统中应用程序之间不能共享内存,在android SDK中提供了4种用于跨进程通讯的方式。这4种方式正好对应于android系统中4种应用程序组件:Activity、Content Provider、Broadcast和Service。1、Activity可以跨进程调用其他应用程序的Activity。 Activity在进程内(同一个应用程序)访问 跨进
进程间通讯的基础知识
进程间通讯的基础知识     复杂的编程环境通常使用多个相关的进程来执行有关操作。进程之间必须进行通讯,来共享资源和信息。因此,要求内核提供必要的机制,这些机制通常称为进程间通信。 一, 进程间通讯的目的 1) 数据传输。进程可能要发送数据到另一个进程。发送的数据量可以在一个字节到几兆字节之间。 2) 共享数据。多个进程想要操作共享的数据。一个进程修改数据,其他共享该数据的进程应该立即
linx-2.5.0.tar.gz
进程间通讯
进程间通讯几种方式
进程通信的目的 数据传输  一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间 共享数据  多个进程想要操作共享数据,一个进程对共享数据 通知事  一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。 资源共享  多个进程之间共享同样的资源。为了作到这一点,需要内核提供锁
JAVA进程间的通信方式(IPC)
JAVA进程间通信的方法主要有以下几种:   (1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。   (2)命名管道(named pipe):命名管道克服了管道没有名字的限制,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。   (3)信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了
Java多线程以及进程间的通信方式
Java 线程通信:1共享变量,如volatite等2wait/notify机制,最好搭配同步锁3Lock/Condition机制  //condition.await();condition.signalAll();4管道 //PipedOutputStream out; PipedInputStream in;  out.connect(in); //只能建立一次Java进程通信1.管道、命名...
android进程间通讯(3)--使用socket
android进程间通讯(3)–使用Socket 前言:本文记录android进程间通讯的另一种通讯方式–Socket。Socket也称“套接字”,是网络通讯中的概念,它分为流式套接字和用户数据报套接字两种,分别对应网络传输层的TCP和UDP协议。TCP协议是面向连接的协议,提供稳定的双向通讯功能,TCP连接的建立需要经过“三次握手”,具有很高的稳定性。UDP是无连接的,提供不稳定的单向通讯功能...
Android AIDL
AIDL实现android进程间通讯,以及不依赖AIDL实现进程间通讯
Android中进程间通讯常见的几种方式以及使用场景
上一个星期看刚哥的书,主要进行了Android中IPC机制的学习,具体的实现方式网上有很多,我这里只是进行简单的总结。 Android中不同的进程中的组件,拥有独立的虚拟机,Application,以及内存空间,所以不能通过共享内存来进行数据交互。下面几种方法却可以实现数据交互。 介绍之前有必要了解一下IPC和RPC的区别:RPC强调的是调用、即一个进程直接调用另外一个进程中的方法,
进程间通信(IPC机制)精炼详解
一、前期基础知识储备IPC定义:IPC是intent-Process Communication的缩写,含义为进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程。IPC不是Android所独有的,任何一个操作系统都需要有相应的IPC机制,比如Windows上可以通过剪贴板、管道和邮槽等来进行进程间通信,而Linux上可以通过命名共享内容、信号量等来进行线程间通信。对于Android来说,...
C#进程间通信的几种方式:管道通信
年底了,有了大把时间,终于着手尝试写写技术博客,跟大家交流下心得。 就从进程间通信相关的内容开始吧,在此对以往工作中用到的几种进程间通信方式做一下简单的总结。 进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。进程间通信的方式(C/S结构开发环境)通常有管道、Socket、消息队列、信号量、共享存储、Streams等。 方式一:管道通...
使用nanomsg库实现多进程之间通信
概述:        之前下载并安装了nanomsg库,接下来就是看看怎么使用啦。首先是看看如何实现进程间的通信吧。 实例demo: #include <stdio.h> #include <pthread.h> #include <stdlib.h> #include <string.h> #include <unistd.h>...
进程间通信--IPC
前言:进程间通信(Inter-Process Communication),简称IPC,就是指进程与进程之间进行通信.一般来说,一个app只有一个进程,但是可能会有多个线程,所以我们用得比较多的是多线程通信,比如handler,AsyncTask.但是在一些特殊的情况下,我们app会需要多个进程,或者是我们在远程服务调用时,就需要跨进程通信了1.设置多进程Android设置多进程的步骤很简单,只用在
windows 进程间通讯大全
进程间通讯大全
java进程间通讯笔记
我整理的java进程间通讯的笔记,包括原理讲解和代码,例子程序。socket、共享内存、RMI、管道。
Java使用管道实现进程间通讯
Java使用管道Pipe实现进程间通讯。
Boost(八)——进程间通讯
结合Boost官网 使用的是boost::interprocess库。 共享内存通常是进程间通讯最快的形式。 boost::interprocess::shared_memory_object 托管共享内存 boost::interprocess::managed_shared_memory 设置内部数据采用 construct<template T>("name")(nu...
如何利用SendMessage实现C#进程间通信?
 进程之间通讯的几种方法:在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯。常用的方法有使用内存映射文件通过共享内存DLL共享内存使用SendMessage向另一进程发送WM_COPYDATA消息比起前两种的复杂实现来,WM_COPYDATA消息无疑是一种经济实惠的一中方法.(ZT)WM_COPYDATA消息的主要目的是允许在进程间传递只读数据。Windows在通过WM_CO
unix网络编程第2卷(高清PDF)
unix网络编程第2卷 进程间通讯 信号量 同步互斥 unix网络编程第2卷 进程间通讯 信号量 同步互斥
Android-AIDL进程间通讯
Android-AIDL进程间通讯
如何向面试官讲述进程间通信
首先不着急一上去就说通信方式,我们可以说一说为什么会有进程间通信??? 首先我们知道进程组织的时候是一个结构体,进程与进程之间是相互独立的,有独立的虚拟地址空间,但是有的时候想要在两个进程之间实现数据传输、资源共享、通知事件(例如进程终止时会通知父进程)以及进程控制(debug进程可以控制其他进程的执行)这些功能时就需要两进程之间通信进行交互,所以由内核提供一份公共资源之要让两进程都能访问就可以...
windows进程间通讯概括
进程间通讯主要包括以下几种,其中windows下常用的就是共享内存、管道、socket等等。 1.文件映射   文件映射(Memory-Mapped Files)能使进程把文件内容当作进程地址区间一块内存那样来对待。因此,进程不必使用文件I/O操作,只需简单的指针操作就可读取和修改文件的内容。   Win32 API允许多个进程访问同一文件映射对象,各个进程在它自己的地址空间里接收内存的指针。通...
深入Python进程间通信原理
继上节使用原生多进程并行运行,基于Redis作为消息队列完成了圆周率的计算,本节我们使用原生操作系统消息队列来替换Redis。 文件 使用文件进行通信是最简单的一种通信方式,子进程将结果输出到临时文件,父进程从文件中读出来。文件名使用子进程的进程id来命名。进程随时都可以通过os.getpid()来获取自己的进程id。 # coding: utf-8 import os impo...
UNIX网络编程-第2卷-进程间通讯
UNIX网络编程-第2卷-进程间通讯 UNIX网络编程-第2卷-进程间通讯
RCF—用于C++的进程间通讯
RCF—用于C++的进程间通讯
进程间通信框架tars
rpc 框架要解决的问题 1. 实现服务的分布式,名字路由服务,以及服务心跳监控,动态扩容,流量统计,调用鉴权。 2. 开发者无需关注通信的细节,接口调用就像本地函数调用。 3. 编程语言无关化。 ...
进程间通讯
为了实现2个进程间的内存共享,我采用了如下方式rn[code=csharp]using System;rnusing System.Collections.Generic;rnusing System.Linq;rnusing System.Text;rnusing System.Threading;rnusing System.IO.MemoryMappedFiles;rnusing System.IO;rnrnnamespace MsgTransferServicernrn class ShareMemoryrn rn private static string _myMutex = "MyMutex";rn private static string _myMemoryMap = "MyMemoryMap";rnrn public ShareMemory()rn rn rnrn public void BeginShareMemory()rn rn new ShareMemory().Run();rn rnrn public void Run()rn rn ThreadPool.QueueUserWorkItem(this.Observer);rn rnrn void Observer(object state)rn rn int lastOffset = sizeof(int);rn while (true)rn rn notifyEvent.WaitOne();rn if (GetMsgBytes(ref lastOffset) == false)rn rn Thread.Sleep(50);rn rn rn rnrn public void PutBytes(Byte[] msgBytes)rn rn tryrn rn mutex.WaitOne();rn using (MemoryMappedViewAccessor accessor = memMap.CreateViewAccessor())rn rn int offset = accessor.ReadInt32(0);rn offset = Math.Max(sizeof(int), offset);rn accessor.Write(offset, (int)msgBytes.Length);rn offset += sizeof(int);rn accessor.WriteArray(offset, msgBytes, 0, msgBytes.Length);rn offset += msgBytes.Length;rn accessor.Write(0, offset);rn rn rn finallyrn rn mutex.ReleaseMutex();rn rn notifyEvent.Set();rn Thread.Sleep(100);rn notifyEvent.Reset();rn rnrn bool GetMsgBytes(ref int lastOffset)rn rn tryrn rn mutex.WaitOne();rn using (MemoryMappedViewAccessor accessor = memMap.CreateViewAccessor())rn rn int newOffset = accessor.ReadInt32(0);rn if (newOffset <= lastOffset) return false;rnrn for (int offset = lastOffset; offset < newOffset; )rn rn int stringLength = accessor.ReadInt32(offset); offset += sizeof(int);rnrn byte[] bytes = new byte[stringLength];rn accessor.ReadArray(offset, bytes, 0, bytes.Length);rn offset += stringLength;rn DisplayMsg(bytes);rn rn lastOffset = newOffset;rn rn rn catch(Exception ex)rn rn StreamWriter sw = new StreamWriter(@"D:\msg.log", true, System.Text.Encoding.GetEncoding("gb2312"));rn sw.WriteLine(DateTime.Now + " 接收到包:" + ex.ToString());rn sw.Close();rn sw.Dispose();rn rn finallyrn rn mutex.ReleaseMutex();rn rn return true;rn rnrn void DisplayMsg(byte[] msgBytes)rn rn rn rnrn Mutex mutex = new Mutex(true, _myMutex);rn MemoryMappedFile memMap = MemoryMappedFile.CreateOrOpen(_myMemoryMap, 1024 * 1024);rn EventWaitHandle notifyEvent = new EventWaitHandle(false, EventResetMode.ManualReset, "MyNotifyEvent");rn rnrn[/code]rn现在有2个问题困扰了我好几天:rn1,如果我在应用程序端(A)调用new ShareMemory().PutBytes(msgBytes)往共享内存中写入数据,在另外的一个控制台程序(C)上是能正常的获得这个数据的,如果我用C往内存中写数据,A却获取不到,也检测不到内存改变的通知;rn2,发送端还是A,这个时候把C换成Windows service(S),S获取不到A往内存中共享的数据,A也获取不到S往内存中共享的数据。rnrn求高人指点。rn
java:进程:进程间通讯的方式
进程间通讯的方式有哪些,各有什么优缺点: 1)管道:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程之间使用。进程的亲缘关系通常是指父子进程关系。 2)有名管道(FIFO):有名管道也是半双工的通信方式,但是允许在没有亲缘关系的进程之间使用,管道是先进先出的通信方式。 3)信号量:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进...
Android IPC源码分析
有关Android IPC进程间通讯的源码分析
文章热词 设计制作学习 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java 学习方法 java培训论坛