本文目录一览

1,进程的通信方式有哪三种

共享存储器系统、消息传递系统、管道通信

进程的通信方式有哪三种

2,进程之间的通信

用软件是最方便的方法。 很多软件有让你察看进程运行时的路径。也就有了关联的文件。 一般正常的干净的系统运行时,进程是很少的(你可以通过任务管理器看到的那些) 但是。。。其实很多程序都在默默地运作着,只不过看不到了。呵呵,他们是很重要的系统得以运作的进程。 用特殊的软件或者通过系统日至自己查找吧。 把头弄昏,也许眼睛也会花掉。 里头的很多程序都会关联起来,相互监视。 软件的网络。。。无限的网络啊。。。

进程之间的通信

3,VB程序和JAVA程序如何实现进程间通信JAVA程序只能获得主窗

你这个涉及到的实际上是进程间通信的问题,如果没有两边的代码那么基本上是不能完成的。 进程间通信的常用方法: socket,两边通过网络来通信,这个放之四海而皆准,跨计算机都可以,呵呵。用通道,说白点就是用类似控制台输入输出的方式来处理,两边同步或异步处理in/out。这种要求第一个进程通过命令行方式来启动第二个进程。可以用共享内存的方式:比如搞一个dll在其中开个共享区,两边读写;或者搞个内存映射文件来回读写。具体用哪种根据实际情况来决定吧

VB程序和JAVA程序如何实现进程间通信JAVA程序只能获得主窗

4,如何实现进程间数据通讯技术

在Windows程式中,各个进程之间常常需要交换数据,进行数据通讯。WIN32 API提供了许多函数使我们能够方便高效地进行进程间的通讯,通过这些函数我们能够控制不同进程间的数据交换,就如同在WIN16中对本地进程进行读写操作相同。典型的WIN16两进程能够通过共享内存来进行数据交换:(1)进程A将GlobalAlloc(GMEM_SHARE...)API分配一定长度的内存;(2)进程A将GlobalAlloc函数返回的句柄传递给进程B(通过一个登录消息);(3)进程B对这个句柄调用GlobalLock函数,并利用GlobalLock函数返回的指针访问数据。这种方法在WIN32中可能失败,这是因为GlobalLock函数返回指向的是进程A的内存,由于进程使用的是虚拟地址而非实际物理地址,因此这一指针仅和A进程有关,而于B进程无关。
进程间通信嘛。。。邮槽?剪贴板?匿名管道?命名管道?这个一两句说不明白,不过你可以到网上查查关于这个的 剪贴板比较方便 不过你这个问题貌似是同一程序的不同窗口吧?如果是那样的话就方便多了直接sendmessage()肯定是不成的 这个只是当前窗口发送当前窗口接受 即使你在别的窗口也有对这个消息的响应函数也接受不到这个消息父类窗口调用子类的可以用如下代码getdlgitem(//子窗口的id)->sendmessage(//可以使自定义消息 也可以使系统消息);子类窗口发给父类的getparent()->sendmessage(//消息名称及参数);显示隐藏可以用showwindow(true)和showwindow(false);设置窗口哪里显示可以用setwindowpos()具体参数去msdn查 仍然不明白的话给我留言

5,windows操作系统中进程通信的两种类型及它们的特点

在Win32下提供的进程间通信方式有以下几种: 剪贴板Clipboard:在16位时代常使用的方式,CWnd类中提供了支持。 COM/DCOM:通过COM系统的代理存根方式进行进程间数据交换,但只能够表现在对接口函数的调用时传送数据,通过DCOM可以在不同主机间传送数据。 Dynamic Data Exchange (DDE):在16位时代常使用的方式。 File Mapping:文件映射,在32位系统中提供的新方法,可用来共享内存。 Mailslots:邮件槽,在32位系统中提供的新方法,可在不同主机间交换数据,分为服务器方和客户方,双方可以通过其进行数据交换,在Win9X下只支持邮件槽客户。 Pipes:管道,分为无名管道:在父子进程间交换数据;有名管道:可在不同主机间交换数据,分为服务器方和客户方,在Win9X下只支持有名管道客户。 RPC:远程过程调用,很少使用,原因有两个:复杂而且与UNIX系统的RCP并不完全兼容。但COM/DCOM的调用是建立在RPC的基础上的。 Windows Sockets:网络套接口,可在不同主机间交换数据,分为服务器方和客户方。WM_COPYDATA:通过发送WM_COPYDATA消息并将数据放在参数中来传递数据给其他进程。
在一本叫《windows核心编程》的书里看到过类似的东西。话说你没学过怎么会有人要求你写这种东西。一方面c++11之前没有线程方面的支持,基本都依靠各种系统(例如windows)这样在进程和线程相关的东西都要学习一些关于特定系统的东西。也就不可移植的东西。另一方面 这东西又不是一个应用软件的要求,很像是考题。你没学怎么就给你出这种问题啊???如果你学过c++自己看下《windows核心编程》应该就有一个 例子 就是这样的。要是你没学过,那么你还要自己先学下c语言啊.这本书对c++的要求不是很高,但c至少是要会的.如果你c都不会你也可以去看下《windows程序设计》然后看到不懂的语法你就看下《c++程序设计语言》查找相应的语法。然后这样慢慢看。《windows程序设计》比《windows核心编程》更适合入门,你可以直接从《windows程序设计》开始入门c语言,学会c你就基本能看懂c++,尽管有些语法不懂也能自己查书了。如果你只是应付这道题,那么《windows程序设计》和《windows核心编程》都有类似的东西。

6,进程间的通信方式 四种

现在最常用的进程间通信的方式有:信号,信号量,消息队列,共享内存。 所谓进程通信,就是不同进程之间进行一些"接触",这种接触有简单,也有复杂。机制不同,复杂度也不一样。通信是一个广义上的意义,不仅仅指传递一些massege。 他们的使用方法是基本相同的,所以只要掌握了一种的使用方法,然后记住其他的使用方法就可以了。 1. 信号 在我学习的内容中,主要接触了信号来实现同步的机制,据说信号也可以用来做其它的事情,但是我还不知道做什么。 信号和信号量是不同的,他们虽然都可用来实现同步和互斥,但前者是使用信号处理器来进行的,后者是使用P,V操作来实现的。 使用信号要先知道有哪些信号,在Linux下有31个需要记住的通用信号,据说也是systemV中最常用的那些。这里略。 1. 1信号相关函数: #include int sigaction(int signo, const struct sigaction *act, struct sigaction *oact); 该函数用来为进程安装信号处理器,struct sigaction数据是用来保存信号处理器的相关信息。 #include int sigemptyset(sigset_t *set); 将信号集合清空。 int sigfillset(sigset_t *set); 将信号集合设置成包含所有的信号。在对信号进行操作以前一定要对信号集进行初始化。 int sigaddset(sigset_t *set, int signo); 向信号集中加入signo对应的新信号。 int sigdelset(sigset_t *set, int signo); 从信号集中删除signo对应的一个信号。 int sigismember(const sigset_t *set, int signo); 判断某个信号是否在信号集中。返回1则在,0则不在。 #include int sigprocmask(int how,const sigset_t *set, sigset_t *oset);用来设置进程的信号屏蔽码。信号屏蔽码可以用来在某段时间内阻塞一些信号集中的信号,如果信号不在信号集中,就不必讨论它,因为肯定不响应,是否能生成也不肯定,我没有做过试验。 1.2我所理解的使用信号机制的方法: 使用信号,主要做的事情就是信号处理器的工作,这里面是你想做的事情。就像中断处理函数一样。 在使用信号以前,首先要初始化信号集,只有在信号集里面的信号才会被考虑。 有两种方法可以初始化信号集,一种是设置空信号集,一种是将所有的信号都加到信号集中。如果你自己想要的信号集不是这两种,可以在初始化了以后通过添加和删除信号进行定制。 如果在进程执行的一段时间内不想对某些信号进行响应,则可以使用sigprocmask对当前的信号集中的一些信号进行阻塞,稍后再执行。

文章TAG:进程  进程通信  通信  程的  进程通信  
下一篇