[go: up one dir, main page]

JPH05204673A - Method and process of communication between process using named pipe - Google Patents

Method and process of communication between process using named pipe

Info

Publication number
JPH05204673A
JPH05204673A JP4199504A JP19950492A JPH05204673A JP H05204673 A JPH05204673 A JP H05204673A JP 4199504 A JP4199504 A JP 4199504A JP 19950492 A JP19950492 A JP 19950492A JP H05204673 A JPH05204673 A JP H05204673A
Authority
JP
Japan
Prior art keywords
message
channel
pipe
sending
receiving process
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP4199504A
Other languages
Japanese (ja)
Other versions
JPH0797323B2 (en
Inventor
Richard J Hrabik
リチャード・ジョセフ・ハービック
Christopher J Lennon
クリストファー・ジョン・レノン
Timothy N Scaggs
ティモシー・ネルソン・スカグス
Philip A Smith
フィリップ・アンソニー・スミス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH05204673A publication Critical patent/JPH05204673A/en
Publication of JPH0797323B2 publication Critical patent/JPH0797323B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

PURPOSE: To obtain a method and device for transmitting a message between a message transmitting process and a message receiving process in a computer system without registering the message type in the system. CONSTITUTION: A process A which wants to receive a message of a type X generates a pipe 106 with a name X. A process D which wants to send a message of the type X to other relative processes in the system opens all instances of a pipe X108 with a name and writes the message to respective instances. The system automatically warns the receiving process A at the other end of a pipe instance and the receiving process A reads the message out of the pipe 106 with the name in response to that.

Description

【発明の詳細な説明】Detailed Description of the Invention

【0001】[0001]

【産業上の利用分野】本発明は一般に多重タスク処理又
は多重処理コンピュータ・システムにおけるプロセス間
通信に関する。詳しくは、本発明は前記システム内のプ
ロセスにより名前付きパイプを介して他のメッセージ受
取りプロセスに、全てメッセージ・タイプに従って、か
つ前記受取りプロセスのテーブル登録を用いずに、メッ
セージを選択的に配布する方法及び装置に関する。
FIELD OF THE INVENTION This invention relates generally to inter-process communication in multi-tasking or multi-processing computer systems. In particular, the present invention selectively distributes messages by processes in the system to other message receiving processes via named pipes, all according to message type, and without using table registration of the receiving process. A method and apparatus.

【0002】[0002]

【従来の技術】本発明は、コンピュータ・システム内の
プロセス間通信(IPC) のために、共有メモリ、セマフォ
ア(semaphore)、キュー(queue)、パイプ及び名前付きパ
イプを含み、基本的な方法の大部分に名前を付ける。こ
れらのIPC の種々の方法の特性は論文TALKING TASKS, b
eginning at page 403 in BYTE magazine, November 19
90 issueに要約されている。
BACKGROUND OF THE INVENTION The present invention includes shared memory, semaphore, queues, pipes and named pipes for interprocess communication (IPC) within a computer system. Name most. The characteristics of various methods of these IPCs are described in the paper TALKING TASKS, b.
eginning at page 403 in BYTE magazine, November 19
It is summarized in 90 issues.

【0003】この開示は、名前付き通信チャネル即ち名
前付きパイプの使用に関連する。プロセス間通信のため
の名前付きパイプの使用に関する1つのシナリオはメッ
セージ配布である。例えば、あるシステムでは、メッセ
ージ・サーバーはそのシステムで実行中の他のプロセス
からのメッセージを受信し、更にそのメッセージを、そ
のメッセージの受信を望む他のプロセスに配布する。こ
の手法は一般にデスクトップ・コンピュータのウィンド
ウ・オペレーティングシステム例えばOS/2(IBM社の商
標) オペレーティングシステムで用いられる。このよう
なオペレーティングシステムで名前付きパイプを用いる
一般的な手法の1つは、メッセージ・サーバーがメッセ
ージを、システム内のあらゆるプロセスに配布し、その
メッセージが関連する情報を含むかどうかを、それを受
信する各プロセスが判定することである。これは同報通
信(broadcast) 手法と呼ばれる。もう1つの一般的な手
法は、プロセス及びその各々が受信することを望む特定
のタイプのメッセージを登録することである。これは登
録アプローチと呼ばれることがある。明らかに、同報通
信手法はコンピュータ内に大量のトラフィックの無駄を
生じる。後者の登録アプローチの実施例は、Software-P
ractice and Experience, Vol.20(S1), pagesS1/3-S1/1
7,June 1990 に発表された別の論文 INTERPROCESS COMM
UNICATION INTHE NINTH EDITION UNIX SYSTEM by David
Presotto and Dennis Ritchieに記述されている。例え
ば、登録アプローチを用いる接続サーバーはこの論文の
ページS1/10 から記述されている。この例では、サーバ
ー・プロセスはパイプを生成し、そのサービス及びその
パイプを他のプロセスに公示する。顧客プロセスは、そ
れがサービスを利用したいとき、前記パイプに接続し、
登録及び要求するサービスのタイプの標識を前記サーバ
ーに伝達する。このタイプのサービスは一定のタイプの
システム・メッセージを受信する要求かも知れない。
This disclosure relates to the use of named communication channels or named pipes. One scenario for using named pipes for interprocess communication is message distribution. For example, in some systems, the message server receives messages from other processes running on that system and then distributes the messages to other processes desiring to receive the messages. This technique is commonly used in desktop computer window operating systems, such as the OS / 2 (trademark of IBM Corporation) operating system. One common approach to using named pipes in such operating systems is to have a message server distribute the message to every process in the system and ask if it contains relevant information. Each process that receives is a decision. This is called a broadcast method. Another common approach is to register the processes and the particular type of message that each of them wants to receive. This is sometimes referred to as the registration approach. Clearly, the broadcast technique results in a large amount of traffic wasted in the computer. An example of the latter registration approach is Software-P
practice and Experience, Vol.20 (S1), pages S1 / 3-S1 / 1
7, another paper published in June 1990 INTERPROCESS COMM
UNICATION INTHE NINTH EDITION UNIX SYSTEM by David
Described in Presotto and Dennis Ritchie. For example, a connection server using the registration approach is described from page S1 / 10 of this paper. In this example, the server process creates a pipe and advertises its service and that pipe to other processes. The customer process connects to the pipe when it wants to use the service,
Communicate to the server an indication of the type of service being registered and requested. This type of service may be a request to receive certain types of system messages.

【0004】論文 PORTABLE IPC ON VANILLA UNIX,Mark
Rain,Penobscot Research Center,Deer Isle,Maine 04
627に前記登録方法の変形が記載されている。この論文
はIPCチャネルを与えかつ顧客プロセスのサーバー登録
として動作するサービスを有するチャネル・サーバーに
ついて記述している。サーバーはチャネル・サービスか
らIPC チャネル(パイプ)を取得する。そしてサーバーは
チャネル・サービスによりそれ自身をそれが提供するサ
ービスの表示と共に登録する。
Paper PORTABLE IPC ON VANILLA UNIX, Mark
Rain, Penobscot Research Center, Deer Isle, Maine 04
627 describes a modification of the registration method. This paper describes a channel server that has a service that provides IPC channels and acts as a server registration for customer processes. The server gets an IPC channel (pipe) from the channel service. The server then registers itself with the channel service along with an indication of the services it offers.

【0005】[0005]

【発明が解決すべき課題】このような登録アプローチは
それを維持していくのに不便なことがある。例えば、も
し登録されたプロセスが異常に終了すれば、その登録を
維持するサーバー・プロセスによる登録は、この状態を
トラップ(trap)する特別の構成なしには自動的には除去
されない。更に、同報通信手法及び登録手法はどちら
も、かなりの資源を消費するが、これは減らすことが望
まれる。
Such a registration approach can be inconvenient to maintain. For example, if a registered process terminates abnormally, the registration by the server process that maintains the registration will not be automatically removed without special configuration to trap this condition. Furthermore, both broadcast and registration techniques consume considerable resources, which is desirable to reduce.

【0006】[0006]

【課題を解決するための手段】本発明はコンピュータ・
システム内のメッセージ送信プロセスとメッセージ受信
プロセスの間でメッセージを伝達するための方法及び装
置である。一定のタイプのメッセージの受信を望むプロ
セスは通信チャネルすなわち、名前付きパイプを生成す
る。このパイプは受信プロセスにおいて終端するととも
にそのコンピュータのオペレーティングシステムにより
管理される。プロセスがそのチャネルをアドレス指定で
きる名前は、前記生成プロセスが受信することを望むメ
ッセージ・タイプに対応して割当てられる。換言すれ
ば、メッセージ・タイプの識別はチャネル名を特定す
る。選択されたタイプのメッセージをシステム内の他の
プロセスに送信するプロセスは、前記選択されたメッセ
ージ・タイプに対応する名前を持つ通信チャネルをオー
プンする。そして送信プロセスはその目的のために提供
されたシステム機能呼出しを用いて前記チャネルへのメ
ッセージを記述する。このチャネルに書込むプロセスは
前記チャネルの他端における受信プロセスに警告を発
し、それに応答して前記受信プロセスは送信チャネルか
らメッセージを読取る。
The present invention is a computer
A method and apparatus for communicating a message between a message sending process and a message receiving process in a system. A process that wants to receive certain types of messages creates a communication channel, or named pipe. This pipe terminates in the receiving process and is managed by the computer's operating system. The name by which the process can address that channel is assigned corresponding to the message type that the producing process wishes to receive. In other words, the message type identification identifies the channel name. A process that sends a message of the selected type to another process in the system opens a communication channel with a name that corresponds to the selected message type. The send process then describes the message to the channel using the system function call provided for that purpose. The process of writing to this channel alerts the receiving process at the other end of the channel, in response the receiving process reads the message from the transmitting channel.

【0007】良好な実施例では、受信プロセスが通信チ
ャネルを生成した後、受信プロセスは、送信プロセスが
前記チャネルへのメッセージの書込みによってシステム
により再活動化されるまで非活動状態に置かれる。受信
プロセスによりメッセージがチャネルから読取られた
後、受信プロセスは別のプロセスが前記チャネルに書込
むまで再び非活動状態を取り戻す。しかしながら、受信
プロセスは、もしそれが希望すれば活動状態に留まり、
オペレーティングシステムによって送られたセマフォア
の使用によりそのパイプにメッセージが存在する時期を
判定することができる。
In the preferred embodiment, after the receiving process has created the communication channel, the receiving process is kept inactive until the sending process is reactivated by the system by writing a message to said channel. After a message is read from a channel by a receiving process, the receiving process regains inactivity until another process writes to the channel. However, the receiving process remains active if it wishes,
The use of semaphores sent by the operating system can determine when a message is present on that pipe.

【0008】名前付き通信チャネルが使用できるタイプ
のシステムでは、即ち、OS/2オペレーティングシステム
のようなシステムでは、同じ名前を有するチャネルの多
くのインスタンス(instance)は同時に存在できる。従っ
て、本発明で用いられるように、タイプXのメッセージ
を受信したい各アプリケーションはそれぞれ名前Xのチ
ャネルのインスタンスを生成する。システム内の全ての
プロセスにメッセージを送信したい送信プロセスは、送
信されるメッセージ・タイプに対応する同じ名前を持
つ、前記システム内の通信チャネルの全てのインスタン
スを単にオープンするだけである。
In a type of system in which named communication channels are available, that is, in systems such as the OS / 2 operating system, many instances of channels with the same name can exist at the same time. Thus, as used in the present invention, each application that wants to receive type X messages instantiates a channel with the name X. A sending process wishing to send a message to all processes in the system simply opens all instances of communication channels in the system with the same name corresponding to the message type being sent.

【0009】従って、選択的メッセージ配布機能又はサ
ービスは、名前付きパイプのようなチャネルを用いかつ
登録機構を用いることなく、容易にシステムに組込みで
きることが分かる。メッセージ配布は送信されるメッセ
ージのタイプ識別だけを知るプロセスにより実行しかつ
指定されたタイプのメッセージを受信したい全てのプロ
セスにより受信することができる。送信プロセスはメッ
セージを受信するプロセスを知らなくてもよい。送信プ
ロセスは送信されるメッセージ・タイプの名前付きシス
テム・チャネルをオープンしてそのチャネルに前記メッ
セージを書込むだけである。同様に、メッセージを受信
するプロセスはそのメッセージを送信するプロセスを知
らなくてもよい。
Therefore, it can be seen that the selective message distribution function or service can be easily integrated into the system using channels such as named pipes and without using a registration mechanism. Message distribution can be performed by a process that knows only the type identification of the message being sent and can be received by any process that wants to receive a message of a specified type. The sending process need not know the process of receiving the message. The send process only opens a named system channel for the message type being sent and writes the message to that channel. Similarly, the process of receiving the message may not know the process of sending the message.

【0010】[0010]

【実施例】名前付きパイプは多重タスク処理コンピュー
タのオペレーティングシステムにある通信手段であり、
前記システムにおいて実行中のプロセスの間又は更に異
なるシステムにおけるプロセスの間でデータ及びメッセ
ージを送受信するのに用いることができる。名前付きパ
イプは現在では技術的によく知られている。下記は前記
名前付きパイプの特徴である。パイプはプロセスが要求
したときシステム機能により構築される。パイプはそれ
を生成するプロセスが所有し、その一端は前記生成する
プロセスより開始する。一般に、名前付きパイプの生成
者及び所有者はそのパイプの他端にあるもう1つのプロ
セスへのデータ等の送信者である。しかしながら、パイ
プの所有者はデータを受信することもできる。実際、こ
の動作モードを用いることは後で説明するように本発明
の利点である。パイプは2重動作のために生成すること
もできる。すなわち、パイプはプロセス間のパイプに沿
って両方向にデータを送信するのに用いることができ
る。各パイプは名前を有し、名前によってパイプをアド
レス指定できる(システムによっては名前をハンドル、
番号に変換し、それによって装置はアドレス指定され
る)。名前付きパイプの複数のインスタンスが許され、
関心のあるプロセスによりアドレス指定できる。
DETAILED DESCRIPTION A named pipe is a communication means in the operating system of a multitasking computer.
It can be used to send and receive data and messages between processes running in the system or even between processes in different systems. Named pipes are now well known in the art. The following are the characteristics of the named pipe. Pipes are built by system functions when requested by a process. The pipe is owned by the process that creates it, and one end of it begins with the process that created it. In general, the creator and owner of a named pipe is the sender of data, etc. to another process at the other end of the pipe. However, the owner of the pipe can also receive the data. In fact, using this mode of operation is an advantage of the invention, as will be explained later. Pipes can also be created for double motion. That is, pipes can be used to send data in both directions along a pipe between processes. Each pipe has a name, which allows you to address the pipe (handles the name on some systems,
Converted to a number, by which the device is addressed). Multiple instances of named pipes are allowed,
Addressable by the process of interest.

【0011】セマフォアと呼ばれるIPC のもう1つの形
式は一般に、送信者がパイプをオーバフローしないよう
にかつ受信者がパイプからデータを読取る時期を知るよ
うに、パイプ上のデータを送信する動作と受信する動作
とを同期させるために用いられる。これらのセマフォア
は一般にパイプに対するアトミック書込み/読取り動作
を保証するためにも用いられる。
Another form of IPC called a semaphore generally receives the act of sending data on a pipe so that the sender does not overflow the pipe and the receiver knows when to read data from the pipe. Used to synchronize motion. These semaphores are also commonly used to ensure atomic write / read operations on pipes.

【0012】パイプを所有するプロセスはいつでもその
パイプを終了させることができる。もしプロセス自身が
終了すれば、そのプロセスが所有する全ての名前付きパ
イプも終了される。換言すれば、名前付きパイプはどれ
もその生成者よりも長くは続かない。これらの名前付き
パイプ上の動作、データの生成、送受信及び終了は他の
プロセスの要求でシステム機能により実行される。例え
ば、OS/2オペレーティングシステムは下記を含むシステ
ム呼出しのセットを介して名前付きパイプの操作を可能
にする: DosCallNmPipe: 名前付きパイプに書込む動作の完全な
セットを実行する。これは名前付きパイプのオープン、
書込み及びクローズを含む。 DosClose: ファイル、装置又はパイプをクローズす
る。 DosConnectNmPipe:アプリケーションを名前付きパイプ
と接続し、そのアプリケーションがそのパイプから読取
りそのパイプに書込むことを可能にする。 DosDisConnectNmPipe: アプリケーションが読取り又は
書込みを行なったのちアプリケーションを名前付きパイ
プから切離す。 DosMakeNmPipe: アプリケーションにより供給された名
前を用いる名前付きパイプを生成してそのアプリケーシ
ョンをアドレス指定できるハンドルを返送し、読取り、
書込み、オープン及びクローズのような名前付きパイプ
の機能を実行する。 DosOpen:ファイル又は名前付きパイプをオープンす
る。 DosPeekNmPipe: アプリケーションは名前付きパイプを
介して到着するデータを前記パイプからそのデータを移
転することなく調べることができる。 DosNmPHandState:アプリケーションはパイプの特徴(例
えば、メッセージ・タイプ対ブロック・タイプ)につい
て質問することができる。 DosONmPipeInfo:アプリケーションは名前付きパイプに
関する統計(例えば、現在のインスタンス数、可能なイ
ンスタンスの最大数)について質問することができる。 DosONmPipeSemState:アプリケーションはパイプの状態
(例えば、パイプ内のデータ、パイプ内のデータの量)
について質問することができる。 DosRead:ファイル又は名前付きパイプから読出す。 DosReadAsync:アプリケーションは指定された量のデー
タをパイプ又はファイルからバッファに非同期で転送す
ることができる。 DosSetNmPHandState:名前付きパイプの読取り及びブロ
ッキング・モデルをセットする。(呼出しが行なわれた
ときもしパイプ内に使用できるデータがなければ、ブロ
ッキングはデータがパイプに到着するまでのアプリケー
ションの停止を指示する)。 DosSetNmPipeSem: システム・セマフォアを名前付きパ
イプに接続する。そしてこのセマフォアはアプリケーシ
ョンによりそのパイプでデータが到着する時期の標識と
して用いられる。 DosWaitNmPipe: アプリケーションは名前付きパイプ生
成が可能になるのを待つことができる。 DosWrite:ファイル又は名前付きパイプに書込む。 DosWriteAsync: アプリケーションは指定された量のデ
ータをバッファからパイプ又はファイルに非同期で転送
することができる。
The process that owns a pipe can terminate it at any time. If the process itself terminates, all named pipes owned by that process are also terminated. In other words, no named pipe lasts longer than its creator. Operations on these named pipes, data generation, transmission / reception, and termination are performed by system functions at the request of other processes. For example, the OS / 2 operating system allows manipulation of named pipes through a set of system calls including: DosCallNmPipe: performs a complete set of operations to write to a named pipe. This is a named pipe open,
Includes write and close. DosClose: Close a file, device or pipe. DosConnectNmPipe: Connects an application with a named pipe and allows the application to read from and write to that pipe. DosDisConnectNmPipe: disconnects the application from the named pipe after the application has read or written. DosMakeNmPipe: Creates a named pipe using the name supplied by the application, returns a handle that can address the application, reads it,
Performs named pipe functions such as write, open and close. DosOpen: Opens a file or named pipe. DosPeekNmPipe: An application can inspect data arriving via a named pipe without transferring that data from the pipe. DosNmPHandState: The application can ask about pipe characteristics (eg message type vs. block type). DosONmPipeInfo: The application can ask for statistics about the named pipe (eg current number of instances, maximum number of possible instances). DosONmPipeSemState: The application is in the pipe state (eg data in pipe, amount of data in pipe)
You can ask about. DosRead: Read from a file or named pipe. DosReadAsync: An application can asynchronously transfer a specified amount of data from a pipe or file to a buffer. DosSetNmPHandState: Sets the read and blocking model for the named pipe. (If no data is available in the pipe when the call is made, blocking signals the application to stop until data arrives in the pipe). DosSetNmPipeSem: Connect a system semaphore to a named pipe. This semaphore is then used by the application as an indicator of when data arrives on that pipe. DosWaitNmPipe: An application can wait for a named pipe to be created. DosWrite: Write to a file or named pipe. DosWriteAsync: An application can asynchronously transfer a specified amount of data from a buffer to a pipe or file.

【0013】これらの機能及びそれらの使用はプログラ
ミング技術分野の当業者に広く知られている。それらは
特にOS/2 Programmers Reference Guide, Document Num
ber64F0275, September 1989 に詳細に記述されてい
る。
These features and their use are well known to those skilled in the programming arts. They are especially OS / 2 Programmers Reference Guide, Document Num
ber64F0275, September 1989 in detail.

【0014】図1はプロセス間のメッセージ伝達を実行
するために従来の技術で名前付きパイプを用いる従来技
術による方法を示す。これは単一の多重タスク処理コン
ピュータ・システム100 を含む簡略化された例である。
この例では、少なくとも4つの別々のアプリケーション
・プロセスA〜Dが関連あるときシステム内で実行中で
あると仮定する。図1には、メッセージ・サーバー102
及び登録テーブル104も示されている。例えば、アプリ
ケーション・プログラムAは、もしそれがシステム又は
他のアプリケーションにより生成された一定のクラス又
はタイプのメッセージを受信したいと望めば、メッセー
ジ・サーバー102 により適切なシステム呼出しによって
それ自身を登録する。登録要求はメッセージのタイプの
登録プロセスからの、受信に関連する指示を含む。アプ
リケーションAはメッセージ・サーバー102 が受信した
タイプXのメッセージを全て調べることを要求すると仮
定する。同様に、ある時点で、アプリケーションCもメ
ッセージ・サーバー102 からタイプXのメッセージを受
信することを要求している。アプリケーションDはタイ
プYのメッセージを受信することを要求している。登録
を可能にするシステム機能が実行されると、その結果と
して登録テーブル104 に要求プロセスが含まれる。この
特定の実施例に従って、登録テーブル104 は、各アプリ
ケーションが受信したいメッセージのタイプ毎の指示と
ともに、アプリケーションA、C及びDの別々のエント
リを含むことが分かる。
FIG. 1 illustrates a prior art method of using named pipes in the prior art to perform inter-process message transfer. This is a simplified example that includes a single multi-tasking computer system 100.
In this example, assume that at least four separate application processes AD are running in the system when relevant. In FIG. 1, the message server 102
And the registration table 104 is also shown. For example, application program A, if it wants to receive certain classes or types of messages generated by the system or other applications, registers itself with message server 102 by an appropriate system call. The registration request includes instructions related to receipt from the message type registration process. Suppose application A requests that message server 102 examine all received type X messages. Similarly, at some point, application C has also requested to receive a type X message from message server 102. Application D has requested to receive a type Y message. When a system function that enables registration is performed, the resulting registration table 104 contains the requesting process. It will be appreciated that, according to this particular embodiment, the registration table 104 includes separate entries for applications A, C and D, as well as an indication for each type of message each application wishes to receive.

【0015】メッセージ・サーバー102で登録要求が受
信されかつ登録テーブル104に適切なエントリが生成さ
れると、メッセージ・サーバー102 からそのアプリケー
ションにつながる名前付きパイプも生成される。図示の
ように、所与の要求元の特定のパイプ名及び要求タイプ
が登録テーブル104 に入れられる。例えば、アプリケー
ションAがタイプXのメッセージの受信に登録されるこ
とを要求すると、 (もしアプリケーションAへのパイプ
がまだなかったならば)メッセージ・サーバー102からア
プリケーションAへのパイプ106 が生成される。これら
のパイプの識別は任意であり、登録テーブル104 を経由
する以外は、それらを介して送信されるメッセージのタ
イプ又は受信プロセスとは無関係である。配布するメッ
セージをメッセージ・サーバー102 に送信するために、
例えば、アプリケーションからメッセージ・サーバー10
2へのパイプ108又は他の通信チャネルも生成することが
できる。この簡略化された実施例では、アプリケーショ
ンからメッセージ・サーバー102 への通信の詳細は省略
されている。
Once the registration request is received at message server 102 and an appropriate entry is created in registration table 104, a named pipe leading from message server 102 to that application is also created. As shown, the particular pipe name and request type for a given requester is entered into the registration table 104. For example, if application A requests to be registered to receive type X messages, a pipe 106 is created from message server 102 to application A (if there is no pipe to application A yet). The identification of these pipes is arbitrary and is independent of the type of message sent through them or the receiving process, except through the registration table 104. To send the message for distribution to Message Server 102,
For example, application to message server 10
A pipe 108 to 2 or other communication channel can also be created. In this simplified example, details of communication from the application to the message server 102 are omitted.

【0016】ここで、図1のアプリケーションDは、タ
イプXのメッセージを受信したい全ての他のシステム・
プロセスに配布するために、タイプXのメッセージを生
成すると仮定する。メッセージはチャネル又はパイプ10
8 によりメッセージ・サーバー102に送信される。メッ
セージ・サーバー102はメッセージを受信し、そのメッ
セージに含まれているタイプを書留め、タイプXのメッ
セージを受信したい全ての登録されたプロセスを識別す
るために登録テーブル104 を探索する。この実施例で
は、メッセージ・サーバー102 はメッセージのタイプX
として登録されたアプリケーションA及びCを発見す
る。従って、メッセージ・サーバー102 はアプリケーシ
ョンA及びCに関連したパイプ識別を登録テーブル104
から取得し、前記受取ったメッセージをこれらのパイプ
を介したアプリケーションDからアプリケーションA及
びCへの経路を指定する。アプリケーションAの場合、
メッセージは登録テーブル104のPIPENAME(パイプ名)フ
ィールドで識別されるパイプ106による経路を指定す
る。
Here, application D of FIG. 1 has all other system applications wishing to receive type X messages.
Suppose you want to generate a type X message for distribution to a process. Message is channel or pipe 10
8 is sent to the message server 102. The message server 102 receives the message, notes the type contained in the message, and searches the registration table 104 to identify all registered processes that want to receive the type X message. In this example, the message server 102 uses message type X
Discover applications A and C registered as Accordingly, message server 102 registers pipe identifications associated with applications A and C in registration table 104.
And route the received message from application D to applications A and C through these pipes. For application A,
The message specifies the route by the pipe 106 identified by the PIPENAME (pipe name) field of the registration table 104.

【0017】既に簡単に説明したように、この典型的な
タイプのメッセージ配列には一定の欠点がある。第一の
欠点は登録テーブル104 の管理が必要なことである。第
二の欠点はこの管理が必ずしも自動ではないことであ
る。例えば、なにかの理由でアプリケーションAがシス
テムから消えると仮定する。それはシステムの誤動作、
プログラムのバグ又はその他のいくつかの原因によるも
のであろう。このようなケースでは、登録テーブル104
は自動的には更新されず、アプリケーションAは登録テ
ーブル104に留まる。メッセージ・サーバー102がテーブ
ル・エントリにより識別されたアプリケーションと通信
しようと試みたとき、エラー発生を検出しそのテーブル
・エントリが最終的にシステムから取り除かれる。しか
しながら、登録テーブル104 は通信から生じる1又はよ
り多くの誤り状態の処理後にのみ正しい状態に復元され
る。
As already briefly explained, this typical type of message arrangement has certain drawbacks. The first drawback is that the registration table 104 needs to be managed. The second drawback is that this management is not always automatic. For example, suppose for some reason Application A disappears from the system. It is a malfunction of the system,
It may be due to a bug in the program or some other cause. In such cases, the registration table 104
Is not automatically updated and application A remains in registration table 104. When the message server 102 attempts to communicate with the application identified by the table entry, the error occurrence is detected and the table entry is eventually removed from the system. However, the registration table 104 is restored to the correct state only after processing one or more error states resulting from the communication.

【0018】図2は本発明に従って設計されたシステム
における類似のメッセージ伝達の実施例を示す。この実
施例では、明白なメッセージ・サーバーはない。このよ
うな例は後で簡単に説明する。この例においても、図2
の実施例ではコンピュータ・システム200 内の4つのア
プリケーションA乃至Dが活動状態であると仮定する。
パイプを操作するために提供されるシステム機能は1つ
のブロック202 として概念的に示される。図中の破線は
アプリケーションによるシステム機能の呼出しを表わ
す。各アプリケーションはRECEIVE(受信) モジュール及
びSEND(送信)モジュール、例えばアプリケーションAに
関連した206及び208を含む。アプリケーションが他のア
プリケーションから所与のタイプのメッセージを受信し
たいとき、そのアプリケーションのRECEIVE モジュール
は名前付きパイプを生成し、生成されたパイプは生成ア
プリケーションのRECEIVE モジュールの一端を担う。ア
プリケーションA乃至DのRECEIVEモジュールでの終端
を示す名前付きパイプ210は一例である。本発明に従っ
て、各パイプは、そのパイプを介して送信されるメッセ
ージ・タイプを識別する名前が付けられる。よって、例
えば、もしアプリケーションAが2つのメッセージ・タ
イプX及びYの受信を望むならば、その RECEIVEモジュ
ールはそのRECEIVE モジュールで終端する2つのパイプ
の各々のインスタンスを呼出す。インスタンスは各メッ
セージのタイプに関するものであり、それぞれがその関
連するメッセージ・タイプを識別するシステム機能によ
り名付けられる。アプリケーションは名前付きパイプを
生成するので、パイプがメッセージ・サーバー102 によ
り所有される図1の一般的な状況と異なり、アプリケー
ションが名前付きパイプを所有する。この構成の1つの
利点は、もしアプリケーションがなにかの理由で終了す
れば、システム機能は自動的にパイプを終了することで
ある。例えば、OS/2オペレーティングシステムは、プロ
セスの通常又は異常終了の間にプロセスにより所有され
た全てのファイル及びパイプ・ハンドルをクローズする
DosClose機能を用いる。後で明らかになるように、この
構成は登録を不要にする。
FIG. 2 illustrates a similar messaging implementation in a system designed in accordance with the present invention. In this example, there is no explicit message server. Such an example will be briefly described later. Also in this example, FIG.
In the present embodiment, it is assumed that four applications A through D within computer system 200 are active.
The system functions provided for manipulating pipes are conceptually shown as one block 202. Dashed lines in the figure represent invocation of system functions by applications. Each application includes a RECEIVE module and a SEND module, eg 206 and 208 associated with application A. When an application wants to receive a given type of message from another application, that application's RECEIVE module creates a named pipe, and the created pipe is part of the producing application's RECEIVE module. The named pipe 210 indicating the end of the applications A to D in the RECEIVE module is an example. In accordance with the present invention, each pipe is named to identify the message type sent through that pipe. So, for example, if application A wants to receive two message types X and Y, its RECEIVE module calls each instance of two pipes terminating in its RECEIVE module. An instance is for each message type, each named by a system function that identifies its associated message type. Because the application creates a named pipe, the application owns the named pipe, unlike the general situation in FIG. 1 where the pipe is owned by the message server 102. One advantage of this arrangement is that system functions automatically terminate the pipe if the application terminates for any reason. For example, the OS / 2 operating system closes all files and pipe handles owned by a process during normal or abnormal termination of the process.
Use DosClose function. This configuration makes registration unnecessary, as will become apparent later.

【0019】図2に示すように、名前付きパイプの各々
はシステム機能202 のブロックで他端が終端される。こ
の終端はもちろん概念的なものである。実際には、これ
らのパイプの各々は単にシステム内に存在し、特定のタ
イプのメッセージを有するパイプの各インスタンスに関
連する首尾一貫した命名規約によりオペレーティングシ
ステムに識別される。そしてこの命名規約により、A乃
至Dのようなプロセスはメッセージ送信のシステム機能
を介してパイプ及びパイプのインスタンスをアクセスで
きる。
As shown in FIG. 2, each of the named pipes is terminated at the other end with a block of system functions 202. This termination is, of course, conceptual. In practice, each of these pipes simply exists in the system and is identified to the operating system by the consistent naming convention associated with each instance of the pipe having a particular type of message. And this naming convention allows processes like A to D to access pipes and instances of pipes through the system functionality of sending messages.

【0020】アプリケーションが、一定のタイプのメッ
セージを、このタイプのメッセージを調べたい全ての他
のアプリケーションに送信したいとき、送信アプリケー
ションはパイプ名のようなメッセージ・タイプを用いて
適切なシステム呼出しを行なう。システム呼出しはその
メッセージ・タイプに対応する名前のパイプの各インス
タンスを見つけ、適切なRECEIVE モジュールへのパイプ
を介してメッセージを送信する。図2の破線は、アプリ
ケーションのSENDモジュールがそのようなメッセージを
他の関連する受信プロセスに送信するためにシステム呼
出しを実行する通信プロセスを表わす。
When an application wants to send a message of a certain type to all other applications that want to look at this type of message, the sending application uses the message type, such as pipename, to make the appropriate system call. .. The system call finds each instance of the pipe named for that message type and sends the message through the pipe to the appropriate RECEIVE module. The dashed line in FIG. 2 represents the communication process in which the SEND module of the application makes system calls to send such messages to other associated receiving processes.

【0021】図3及び図4は各アプリケーションのRECE
IVE モジュール及びSENDモジュールにより実行される主
要なステップをそれぞれ示す。これらのステップに対応
するソース・コードは付録A及び付録Bにそれぞれ示
す。
FIGS. 3 and 4 show the RECE of each application.
The main steps performed by the IVE module and the SEND module are shown respectively. The source code corresponding to these steps is given in Appendix A and Appendix B, respectively.

【0022】ここで、RECEIVE モジュールを図3及び付
録Aに関連して説明する。このモジュールはアプリケー
ションが指定されたタイプのメッセージを受信するため
にそれ自身を設定したいとき実行される。ステップ310
はアプリケーションが受信したいメッセージのタイプに
従ってパイプ名を生成する。パイプ名を生成する種々の
方法がある。これは自明の機能であるのでその動作の詳
細は説明を要しない。唯一の要求は、所与のタイプのメ
ッセージについて、同じパイプ名が全ての関連アプリケ
ーションにより生成されることである。良好な実施例で
は、名前を生成するコードがソース・ライブラリに含ま
れている。このライブラリは各アプリケーションのRECE
IVE モジュールのコードに含まれ、前記モジュールにコ
ンパイルされる。付録Aで、このライブラリ・コードは
PIPENAME.C と呼ばれ、ライン8でRECEIVEモジュール
に包含される。RECEIVEモジュールの本体部分はライン1
0で始まる。ライン13のシステム機能呼出しDosMakeNmPi
pe は生成アプリケーションにより所有されかつ生成ア
プリケーションで終端するパイプを実際に生成する。こ
れは図3のステップ320に対応する。DosMakeNmPipeはパ
イプの名前を生成するもう1つの機能 "build_pipe_nam
e"を呼出す。パイプ名はそのパイプの生成を必要とする
メッセージのタイプに基づいて予め決定される。関数Do
sMakeNmPipe はパラメータの数である。最初のパラメー
タは、ライブラリ・ソース・プログラムPIPENAME.Cに含
まれる "build_pipe_name(X)" を識別する。前述のよう
に、この機能はDosMakeNmPipeのパイプ名を生成する。
これは図3のステップ310に対応する。DosMakeNmPipeは
パイプを生成し、"pipe_handle"を返送する。それによ
ってパイプは他のシステム機能呼出しを介してアドレス
指定される。DosMakeNmPipeの引数、Xは生成されるタ
イプのメッセージ・タイプを表わす。ライン14でのパイ
プ生成の成否はライン14にある戻りコード変数 "rc" 内
のDosMakeNmPipe により返送される。この例はブロッキ
ング・モードのパイプを生成する。これはメッセージが
パイプに現われるまでオペレーティングシステムが Dos
ConnectNmPipe 機能呼出しを実行するプロセスの動作を
延期すること(ときには休眠プロセスと呼ばれる)を意
味する。メッセージがパイプに現われた時点で、付録A
のライン16でメッセージの読取りを開始するように、オ
ペレーティングシステムは延期されたプロセスの動作を
再開始(プロセスを再喚起)する。もしパイプが非ブロ
ッキング・モードで生成されたならば、RECEIVE プロセ
スはパイプ動作自身を、例えば、DosSetNmPipeSem 機能
呼出しの使用により管理しなくてもよい。
The RECEIVE module will now be described with reference to FIG. 3 and Appendix A. This module runs when an application wants to configure itself to receive messages of the specified type. Step 310
Generates a pipe name according to the type of message the application wants to receive. There are various ways to generate a pipe name. Since this is a self-explanatory function, detailed description of its operation is not necessary. The only requirement is that for a given type of message, the same pipe name will be generated by all related applications. In the preferred embodiment, the code for generating the name is included in the source library. This library is RECE of each application
Included in the code for the IVE module and compiled into that module. In Appendix A, this library code is
It is called PIPENAME.C and is included in the RECEIVE module on line 8. The main body of the RECEIVE module is line 1
Starts with 0. System function call DosMakeNmPi on line 13
pe actually creates a pipe that is owned by and terminates in the producing application. This corresponds to step 320 in FIG. DosMakeNmPipe is another feature to generate pipe names "build_pipe_nam
Call e ". The pipe name is predetermined based on the type of message that needs to create the pipe. Function Do
sMakeNmPipe is the number of parameters. The first parameter identifies the "build_pipe_name (X)" contained in the library source program PIPENAME.C. As mentioned above, this function will generate the pipe name for DosMakeNmPipe.
This corresponds to step 310 in FIG. DosMakeNmPipe creates a pipe and returns "pipe_handle". The pipe is thereby addressed via another system function call. Argument of DosMakeNmPipe, X represents the message type of the generated type. The success or failure of the pipe creation on line 14 is returned by DosMakeNmPipe in the return code variable "rc" on line 14. This example creates a blocking mode pipe. This causes the operating system to Dos until the message appears in the pipe.
This means suspending the operation of the process executing the ConnectNmPipe function call (sometimes called the dormant process). When the message appears on the pipe, Appendix A
The operating system restarts the operation of the deferred process (rewakes the process) so as to start reading the message on line 16 of the. If the pipe was created in non-blocking mode, the RECEIVE process does not have to manage the pipe operation itself, for example by using the DosSetNmPipeSem function call.

【0023】パイプに関連するメッセージ・タイプを反
映する一貫したパイプ名を生成する代替方法は、その目
的のためのシステム機能呼出しを提供することである。
An alternative way to generate a consistent pipe name that reflects the message type associated with the pipe is to provide a system function call for that purpose.

【0024】NO_ERRORに等しくセットされているrcで示
すように、パイプが首尾よく生成された後、RECEIVE モ
ジュールはパイプ上でそのパイプに対応するメッセージ
の受信を待つ。これは例示された実施例では "休眠" に
相当する。この動作は図3のステップ330 及び付録Aの
ライン14で起きる。もしアプリケーションが他のタイプ
のメッセージの受信を望むならば、RECEIVE モジュール
はこれらのメッセージのタイプのパイプを生成し更にそ
れらのパイプ上で待つ必要がある。もしメッセージが送
信されれば、ループ動作及び検査で又は他の手段でシス
テム資源を消費せずに、そのメッセージを受信するオペ
レーティングシステムにより待機中のアプリケーション
が喚起される。この良好な実施例では、RECEIVE モジュ
ールはシステム機能呼出しDosConnectNmPipeを用いる。
前記機能はメッセージ送信者からのDosOpen システム呼
出しを受け入れるパイプを準備する。指定されたメッセ
ージ・タイプのDosOpen機能を別のアプリケーションが
実行するまで、RECEIVEモジュールは休眠状態のままで
ある。
After the pipe has been successfully created, the RECEIVE module waits on the pipe to receive the message corresponding to that pipe, as indicated by rc set equal to NO_ERROR. This corresponds to "sleep" in the illustrated embodiment. This action occurs at step 330 of FIG. 3 and line 14 of Appendix A. If the application wants to receive other types of messages, the RECEIVE module needs to create pipes for these message types and wait on those pipes. If the message is sent, the waiting application is awakened by the operating system receiving the message without looping and checking or otherwise consuming system resources. In this preferred embodiment, the RECEIVE module uses the system function call DosConnectNmPipe.
The function prepares a pipe to accept DosOpen system calls from the message sender. The RECEIVE module remains dormant until another application performs the DosOpen function for the specified message type.

【0025】メッセージ送信者が名前付きパイプと結合
する(指定されたパイプ名のDosOpenシステム機能を実行
する) と、送信者はパイプに接続される。実際には、送
信者は同じ名前の名前付きパイプのあらゆるインスタン
スに接続される。SENDモジュールに関連して説明する送
信アプリケーションはそれが別のシステム呼出しにより
伝達したいメッセージを送信する。正しいメッセージ・
タイプのパイプ・インスタンスに接続されたあらゆるRE
CEIVE モジュールはそのパイプからのメッセージを受信
する。この動作は図3の340 及び付録Aのライン16で起
きる。システム機能DosRead は付録Aのライン16で実際
にパイプからのメッセージ読取りを実行する。メッセー
ジは前記機能内で指定されたパラメータ"buffer(バッフ
ァ)"に読取られる。"buffer"への実際の書込みはライン
25で起きる。パイプからのメッセージ・バイトの読取書
込はライン21でのパラメータ "bytes_read" がこれ以上
のバイトは来ないことを表わすまで続く。これはメッセ
ージの終了を知らせる。この時点で、パイプは次の他の
メッセージに備えてリセットせねばならない。この動作
は図3のステップ350 及び付録Aのライン22で起きる。
システム機能呼出しDosDisConnectNmPipe はライン22で
この動作を実行する。パイプがリセットされた後、RECE
IVEモジュールは次のメッセージを受信するためにステ
ップ330に戻って待機する。
When a message sender joins a named pipe (performs a DosOpen system function with the specified pipe name), the sender is connected to the pipe. In fact, the sender is connected to every instance of the named pipe with the same name. The send application described in connection with the SEND module sends a message that it wants to convey by another system call. Correct message
Any RE connected to a type pipe instance
The CEIVE module receives messages from that pipe. This action occurs at 340 in FIG. 3 and line 16 in Appendix A. The system function DosRead does the actual message reading from the pipe on line 16 of Appendix A. The message is read into the parameter "buffer" specified in the function. The actual write to "buffer" is a line
Get up at 25. Reading and writing message bytes from the pipe continues until the parameter "bytes_read" on line 21 indicates that no more bytes will come. This signals the end of the message. At this point, the pipe must be reset in preparation for the next message. This action occurs in step 350 of FIG. 3 and line 22 of Appendix A.
The system function call DosDisConnectNmPipe performs this action on line 22. RECE after the pipe is reset
The IVE module returns to step 330 and waits to receive the next message.

【0026】RECEIVE モジュールはまたメッセージが読
取られ前記バッファに記憶されたのち前記メッセージを
操作できるように適切な機能を活動化する。しかしなが
ら、この機能は本発明に特に関連しないので図示しな
い。
The RECEIVE module also activates the appropriate functions so that the message can be manipulated after it has been read and stored in the buffer. However, this function is not shown because it is not particularly relevant to the present invention.

【0027】アプリケーションSENDモジュールは図4及
び付録Bに示す。SENDモジュールは、それが全ての他の
関連アプリケーションへのタイプXのメッセージの送信
を実行するとき、RECEIVE モジュールに関して既に説明
した方法と同じようにメッセージ・タイプに対応するパ
イプ名を生成する。この動作は図4のステップ410 及び
付録Bのライン15で起きる。次に、ライン16(及びステ
ップ420) で、SENDモジュールはシステム内のメッセー
ジ・タイプに対応する名前を持つ名前付きパイプの全て
のインスタンスに結合するループを開始する。各ループ
でシステム機能により次のパイプ名のインスタンスがオ
ープンされる。これ以上はパイプ・インスタンスがない
とき、オペレーティングシステムはSENDモジュールに戻
りコードを知らせる。ライン18で、システム機能呼出し
DosOpen により各名前付きパイプとの結合が実際に行な
われる。各パイプへのメッセージ書込みを実行するルー
プは付録bのライン21で起きる。ライン24(図4のステ
ップ430) で、DosWriteシステム呼出しを介してパイプ
へのメッセージの実際の書込みが起きる。各ループで、
DosWrite機能は名前付きパイプの次のインスタンスに自
動的に書込む。各々がパイプに書込んだ後、DosCloseシ
ステム機能呼出しは、ライン25 (図4のステップ440)で
送信アプリケーションをパイプから切離し、パイプに結
合されたアプリケーションのRECEIVEモジュールのライ
ン18におけるDosRead機能にパラメータbyte_read内の0
バイト表示を受取らせる。SENDモジュールによるパイプ
切離し(クローズ)はそのパイプ・インスタンスに対する
"send"動作の終了を示す。ループは図4のステップ430
及び440で名前付きパイプの全てのインスタンスへのメ
ッセージの書込みを反復する。その後、この特定のSEND
モジュールの実行は終了し、アプリケーションが他のメ
ッセージの送信を望むまでその動作を停止する。
The application SEND module is shown in FIG. 4 and Appendix B. The SEND module, when it performs the sending of a type X message to all other related applications, generates a pipe name corresponding to the message type in the same way as previously described for the RECEIVE module. This action occurs at step 410 of FIG. 4 and line 15 of Appendix B. Next, at line 16 (and step 420), the SEND module begins a loop that binds to all instances of the named pipe with names corresponding to the message type in the system. In each loop, the system function opens the next instance of the pipe name. When there are no more pipe instances, the operating system informs the SEND module of the return code. System function call on line 18
DosOpen actually does the join with each named pipe. The loop performing the message write to each pipe occurs at line 21 in Appendix b. At line 24 (step 430 in FIG. 4), the actual writing of the message to the pipe occurs via the DosWrite system call. In each loop,
The DosWrite function will automatically write to the next instance of the named pipe. After each writing to the pipe, the DosClose system function call disconnects the sending application from the pipe at line 25 (step 440 of FIG. 4) and the parameter byte_read to the DosRead function at line 18 of the RECEIVE module of the application bound to the pipe. 0 of
Receive a byte display. The pipe disconnection (close) by the SEND module is for the pipe instance.
Indicates the end of a "send" operation. The loop is step 430 in FIG.
And 440 iterate writing the message to all instances of the named pipe. Then this particular send
Execution of the module is terminated, stopping its operation until the application wants to send another message.

【0028】前述の方法により、メッセージ送信アプリ
ケーションはどのアプリケーションが特定のメッセージ
を受信したいかを知る必要はない。受信アプリケーショ
ンもどのアプリケーションがメッセージを送信するかを
知らなくてもよい。そして、重要なことは、メッセージ
は柔軟かつ強力に全システムに伝達され、目的達成に要
するシステム・オーバーヘッドは大幅に減少する。一貫
したパイプ命名規約は、アプリケーションを識別し又は
それらを登録する必要なしに、受信アプリケーションが
受信したいメッセージのタイプを識別し、送信アプリケ
ーションが指定されたタイプのメッセージを欲する全て
の他のアプリケーションと通信することを可能にする。
名前付きパイプへのメッセージ読取書込動作は自動的な
アトミック動作である。すなわち、ひとたび2つのパイ
プの端がメッセージを送信するために結合されれば、前
記パイプによる書込読取動作はそれらのパイプが切離さ
れるまで他のどの送信アプリケーションも割込むことが
できない。これはメッセージの実際の転送を管理するシ
ステム機能を用いる自動特性である。
By the method described above, the messaging application does not need to know which application wants to receive a particular message. The receiving application may also not know which application sends the message. And, importantly, messages are delivered flexibly and powerfully throughout the system, significantly reducing the system overhead required to achieve the goal. A consistent pipe naming convention identifies the types of messages that the receiving application wants to receive and allows the sending application to communicate with all other applications that want a specified type of message without having to identify the applications or register them. To be able to do.
Message read and write operations on named pipes are automatic atomic operations. That is, once the ends of two pipes have been combined to send a message, a write-read operation by the pipe cannot interrupt any other sending application until the pipes are disconnected. This is an automatic feature that uses system functions to manage the actual transfer of messages.

【0029】図5は本発明を用いる1つの特定の実施例
を示す。この実施例はデスクトップ・コンピュータ上で
実行中の他のプロセスにメッセージ・サービスを提供す
る1つのデスクトップ・コンピュータ・プロセスの使用
を必要とする。例えば、このサービスはコンピュータの
ユーザに対するロギング(logging) 及び画面表示のため
の背景プロセスから操作可能メッセージを転送するため
に用いることができる。メッセージ・サービスは、コン
ピュータ表示画面をアクセスしないプロセスの選択され
たタイプのメッセージの統合された表示を、ユーザに提
供する。例えば、この例示のメッセージ・サービスを用
いてOS/2(IBMの商標) オペレーティングシステム内の分
離したソフトウェア・プロセスの問題に対する解決方法
を提供することができる。分離したプロセスは現時点で
はコンピュータの動作を中断せずに画面を出力すること
はできない。定義により、分離したプロセスはユーザの
入出力動作のための "screen(画面)"又は "keyboard(キ
ーボード)"を与えられない。これはシステム・オーバー
ヘッドを減少させる。しかしながら、分離したプロセス
は、異常な状態がユーザとの通信を必要とするときで
も、画面の大きさを制御せずにはユーザと通信すること
ができない問題を生じるので、他のアプリケーションの
画面伝達にかなり干渉する。このメッセージ・サービス
は、前記干渉なしに、前記分離したプロセスがユーザに
画面メッセージを表示することを可能にする。システム
・コンソール・プロセス500 は画面にウィンドウを重ね
るだけで干渉せずにメッセージを表示する。
FIG. 5 illustrates one particular embodiment using the present invention. This embodiment requires the use of one desktop computer process to provide message services to other processes running on the desktop computer. For example, this service can be used to transfer operational messages from a background process for logging and screen display to computer users. The message service provides the user with an integrated view of selected types of messages for processes that do not access the computer display screen. For example, this exemplary message service can be used to provide a solution to the problem of a separate software process in the OS / 2 (trademark of IBM) operating system. The detached process cannot currently output a screen without interrupting the operation of the computer. By definition, a separate process is not given a "screen" or "keyboard" for user I / O activity. This reduces system overhead. However, the detached process causes a problem in that it cannot communicate with the user without controlling the size of the screen, even when an abnormal state requires communication with the user, so that the screen transmission of another application occurs. Considerably interfere with. This message service allows the separate process to display a screen message to the user without the interference. The system console process 500 simply puts a window on the screen and displays the message without interference.

【0030】詳しくは、システム・コンソール・プロセ
ス500 の目的は指定されたタイプ、例えばタイプZのメ
ッセージをそのコンピュータで動作する他のプロセスA
乃至Dから受信し、それらを表示画面510 に知能的にか
つ干渉せずに表示することである。例えば、システム・
コンソール・プロセス500 は、受信したメッセージを受
信した順序で表示するとともに、同時に画面に表示され
る他の情報に干渉しない画面ウィンドウにだけそれらを
表示するように設計されていると仮定されることがあ
る。コンピュータがオンになると、システム・コンソー
ル・プロセス500はそのコンピュータ内の背景プロセス
としてロードされる。その最初の動作の1つはパイプ名
Zを生成することである。パイプ名Zはそれが受信した
いメッセージ・タイプに対応する。そのパイプの一端は
システム・コンソール・プロセス500 で終端する。他の
端は、図2の場合のように、システム機能520 のブロッ
クで概念的に終端する。設計により、システム内の全て
のプロセスA乃至Dは、もしそれらが誤り、ロギング及
び一般的な情報メッセージをユーザに表示したければ、
メッセージ・タイプZによりそれが可能なことが分か
る。よって、プロセス内で、たとえ分離したプロセス内
でも、このような事象が起きると、そのプロセスはタイ
プZとして所望のメッセージを単に生成し、適切なシス
テム呼出しを名前付きパイプZに対して行ない、メッセ
ージをそのパイプで送信する。その結果、システム・コ
ンソール・プロセス500 はメッセージを受信し、表示画
面510 に表示ウィンドウを生成する適切な動作を行な
う。そしてシステム・コンソール・プロセス500 はその
ウィンドウにメッセージを表示し、必要なら、トーン信
号によりユーザに警告し、そしてユーザからの要求でウ
ィンドウを除去する。これらは全て表示プロセスが既知
その他の任意のプロセスから受信するタイプZの全ての
メッセージについてこのプロセスを管理している間に行
なわれる。
Specifically, the purpose of the system console process 500 is to provide a message of a specified type, eg type Z, to another process A running on that computer.
To D and display them on the display screen 510 intelligently and without interference. For example, the system
It can be assumed that the console process 500 is designed to display received messages in the order in which they are received, and to display them only in screen windows that do not interfere with other information displayed on the screen at the same time. is there. When the computer is turned on, the system console process 500 is loaded as a background process within that computer. One of its first actions is to generate the pipe name Z. The pipe name Z corresponds to the message type it wants to receive. One end of the pipe ends in the system console process 500. The other end conceptually terminates in a block of system functions 520, as in FIG. By design, all processes A-D in the system will have the following if they want to display errors, logging and general informational messages to the user.
Message type Z shows that this is possible. Thus, when such an event occurs in a process, even in a separate process, that process simply produces the desired message as type Z and makes the appropriate system call to the named pipe Z. Is sent through that pipe. As a result, system console process 500 receives the message and takes appropriate action to create a display window on display screen 510. The system console process 500 then displays a message in that window, alerts the user with a tone signal if necessary, and removes the window at the user's request. All this is done while the display process is managing this process for all messages of type Z it receives from any other known process.

【0031】 付録A /********************************************************************/ /* */ /* RECEIVE.C */ /* */ /********************************************************************/ 1)#define INCL_DOS 2)#define INCL_DOSNMPIPES 3)#define INCL_DOSERRORS 4)#include <os2.h> 5)#include <stdio.h> 6)#define PIPE_SIZE 1024 7)#define MAX_PIPE_INSTANCES 5 8)#define X 3 9)#include "pipename.c" 10)int main ( void ) { 11) USHORT rc; 12) HPIPE pipe_handle; /* 名前付きパイプを生成 */ 13) rc = DosMakeNmPipe( /* パイプのインスタンスを生成 */ build_pipe_name(X),/* データ・タイプXのパイプ名を取得 */ &pipe_handle, /* パイプ・ハンドルを返送 */ 0U, /* OpenMode: 内方向 (顧客からサーバーへ) */ /*子は受継ぎ可能 */ MAX_PIPE_INSTANCES, /* ブロッキング・モードでオープン */ 0U, /* 外向性バッファ・サイズを助言 */ PIPE_SIZE, /* 内向性バッファ・サイズを助言 */ 0x5000u1); /* DosWaitNmPipeの省略時タイムアウト */ /* パイプでのメッセージ待ち */ 14) while ( rc == NO_ERROR ) { 15) rc = DosConnectNmPipe ( pipe_handle ); /* 送信者からのDosOpenを */ /* 受け入れるパイプを準備 */ /* OS/2は送信者がこのパイプ・インスタンスを */ /* DosOpenするまでこの動作をブロック */ /* 受信したメッセージとその読取り */ 16) while ( rc == NO_ERROR ) { /* 全てのデータの読取りが完了するまで */ /* 送信者からの読取りを保持 */ 17) USHORT bytes_read; 18) static BYTE buffer [ PIPE_SIZE ]; 19) rc = DosRead ( pipe_handle, buffer, sizeof buffer, &bytes_read ); /* パイプからデータを読取る */ 20) if ( rc == NO_ERROR ) { 21) if ( bytes_read == 0 ) /* 送信者からのデータはこれ以上はない */ { /* パイプをリセット */ 22) rc = DosDisConnectNmPipe ( pipe_handle ); 23) break; /* 現在の送信者を切離す */ } 24) else /* 受信したデータを表示 */ { 25) write ( 1,buffer,byte_read ); /* 普通の出力装置 #1 に書込む */ } }/* if */ }/* while */ }/* while */ return 0; }/* main */ /* -------------------- end of file -------------------- */Appendix A / ******************************************** ************************ / / * * / / * RECEIVE.C * / / * * / / ********* ************************************************** ********* / 1) #define INCL_DOS 2) #define INCL_DOSNMPIPES 3) #define INCL_DOSERRORS 4) #include <os2.h> 5) #include <stdio.h> 6) #define PIPE_SIZE 1024 7 ) #define MAX_PIPE_INSTANCES 5 8) #define X 3 9) #include "pipename.c" 10) int main (void) (11) USHORT rc; 12) HPIPE pipe_handle; / * Generate named pipe * / 13) rc = DosMakeNmPipe (/ * Create a pipe instance * / build_pipe_name (X), / * Get the pipe name of data type X * / & pipe_handle, / * Return the pipe handle * / 0U, / * OpenMode: Inward ( (Customer to server) * / / * Child can inherit * / MAX_PIPE_INSTANCES, / * Open in blocking mode * / 0U, / * advise outgoing buffer size * / PIPE_SIZE, / * specify incoming buffer size Advice * / 0x5000u1); / * DosWait Default timeout of NmPipe * / / * Wait for message on pipe * / 14) while (rc == NO_ERROR) (15) rc = DosConnectNmPipe (pipe_handle); / * Accept pipe DosOpen from sender * / / * Accept pipe Preparation * / / * OS / 2 blocks this action until the sender * / / * DosOpen this pipe instance * / / * Received message and its reading * / 16) while (rc == NO_ERROR) ( / * Keep reading from sender until all data is read * / / * Keep reading from sender * / 17) USHORT bytes_read; 18) static BYTE buffer [PIPE_SIZE]; 19) rc = DosRead (pipe_handle, buffer, sizeof buffer , &bytes_read); / * Read data from pipe * / 20) if (rc == NO_ERROR) (21) if (bytes_read == 0) / * No more data from sender * / {/ * pipe Reset * / 22) rc = DosDisConnectNmPipe (pipe_handle); 23) break; / * disconnect the current sender * /} 24) else / * show received data * / (25) write (1, buffer, byte_read); / * Write to ordinary output device # 1 * /}} / * if * /} / * while * /} / * while * / return 0;} / * main * / / * -------------------- end of file -------------------- * /

【0032】 付録B /********************************************************************/ /* */ /* SEND.C */ /* */ /********************************************************************/ 1)#define INCL_DOS 2)#define INCL_DOSNMPIPES 3)#define INCL_DOSERRORS 4)#include <os2.h> 5)#include <stdio.h> 6)#define PIPE_SIZE 1024 7)#define MAX_PIPE_INSTANCES 5 8)#define X 3 9)#include "pipename.c" 10)int main ( void ) { 11) HPIPE pipe_handle [ MAX_PIPE_INSTANCES ]; 12) USHORT rc; 13) PSZ pipename; 14) int i,number_of_instances = 0; /* PIPENAMEを取得 */ 15) pipename = build_pipe_name(X);/* データ・タイプXのパイプ名を取得 */ /* このパイプ名の全てのインスタンスを結合 */ /* 全ての使用できるパイプ・インスタンスを */ /* 結合するループ */ 16) for ( i = 0; i < MAX_PIPE_INSTANCES; + +i){ 17) USHORT action_taken; 18) rc = DosOpen ( /* パイプ・インスタンスを結合 */ pipename, &(pipe_handle[number_of_instances]), &action_taken, 0UL, /* ファイル・サイズ */ 1U, /* ファイル属性 */ 1U, /* フラグをオープン:パイプがあればオープン */ /* それが存在しない場合は失敗 */ 0x0041U, /* 子は受継ぎ可能, どれも拒否せず */ /* Write-only access */ 0UL /* 予備 ULONG */ ); 19) if ( rc == NO_ERROR ) { + + number_of_instances; } } /* for */ 20) printf ( "Number of instances = %u/n", number_of_instances ); /* このパイプ名の各インスタンスにメッセージを書込む */ 21) for ( i = 0 ; i < number_of_instances; + + i){ /* パイプ・インスタンス毎に: */ /* 書込みそして切離す */ 22) USHORT bytes_written; 23) static BYTE data [] = "Test Data"; 24) DosWrite ( pipe_handle [i], data, sizeof data, &byte_written ); /* このパイプ名のインスタンスを切離す */ 25) DosClose ( pipe_handle [i] ); /* パイプ・インスタンスを切離す */ }/* for */ 26) return 0; }/* main */ /* -------------------- end of file -------------------- */Appendix B / ******************************************** ************************ / / * * / / * SEND.C * / / * * / / ********* ************************************************** ********* / 1) #define INCL_DOS 2) #define INCL_DOSNMPIPES 3) #define INCL_DOSERRORS 4) #include <os2.h> 5) #include <stdio.h> 6) #define PIPE_SIZE 1024 7 ) #define MAX_PIPE_INSTANCES 5 8) #define X 3 9) #include "pipename.c" 10) int main (void) (11) HPIPE pipe_handle [MAX_PIPE_INSTANCES]; 12) USHORT rc; 13) PSZ pipename; 14) int i , number_of_instances = 0; / * Get PIPENAME * / 15) pipename = build_pipe_name (X); / * Get pipe name of data type X * / / * Combine all instances of this pipe name * / / * All A loop that joins the available pipe instances of * / / * * / 16) for (i = 0; i <MAX_PIPE_INSTANCES; + + i) {17) USHORT action_taken; 18) rc = DosOpen (/ * Join * / pipename, & (pipe_handle [number_of_instances]), & action_taken, 0UL, / * file size * / 1U, / * file attributes * / 1U, / * open flag: open if pipe exists * / / * fail if it does not exist * / 0x0041U, / * child Can inherit, does not reject any * / / * Write-only access * / 0UL / * reserve ULONG * /); 19) if (rc == NO_ERROR) {+ + number_of_instances;}} / * for * / 20) printf ("Number of instances =% u / n", number_of_instances); / * Write a message to each instance of this pipe name * / 21) for (i = 0; i <number_of_instances; + + i) { / * For each pipe instance: * / / * Write and detach * / 22) USHORT bytes_written; 23) static BYTE data [] = "Test Data"; 24) DosWrite (pipe_handle [i], data, sizeof data, &byte_written); / * Detach an instance of this pipe name * / 25) DosClose (pipe_handle [i]); / * Detach a pipe instance * /} / * for * / 26) return 0;} / * main * / / * ------------------- -end of file -------------------- * /

【図面の簡単な説明】[Brief description of drawings]

【図1】登録アプローチを用いる従来技術のメッセージ
配布システムを示すブロック図である。
FIG. 1 is a block diagram illustrating a prior art message distribution system that uses a registration approach.

【図2】本発明による名前付き通信チャネルを使用する
システムを示すブロック図である。
FIG. 2 is a block diagram illustrating a system that uses named communication channels according to the present invention.

【図3】付録Aに示すコードを有するメッセージ受信モ
ジュールの流れ図である。
FIG. 3 is a flow diagram of a message receiving module having the code shown in Appendix A.

【図4】付録Bに示すコードを有するメッセージ送信モ
ジュールの流れ図である。
FIG. 4 is a flow chart of a message transmission module having the code shown in Appendix B.

【図5】本発明によるメッセージ配布サービスの実施例
を示す図である。
FIG. 5 is a diagram showing an embodiment of a message distribution service according to the present invention.

【符号の説明】[Explanation of symbols]

100 コンピュータ・システム 102 メッセージ・サーバー 104 登録テーブル 106 パイプ 108 パイプ 200 コンピュータ・システム 202 システム機能 206 RECEIVEモジュール 208 SENDモジュール 210 名前付きパイプ 100 computer system 102 message server 104 registration table 106 pipe 108 pipe 200 computer system 202 system function 206 RECEIVE module 208 SEND module 210 named pipe

───────────────────────────────────────────────────── フロントページの続き (72)発明者 クリストファー・ジョン・レノン アメリカ合衆国27511、ノースカロライナ 州キャリー、イースト・ゲレル・コート 104番他 (72)発明者 ティモシー・ネルソン・スカグス アメリカ合衆国27707、ノースカロライナ 州ダーラム、ペンリス ナンバー・イー 5323番地 (72)発明者 フィリップ・アンソニー・スミス アメリカ合衆国27604、ノースカロライナ 州ラレー、ビーコン・ヒル・コート 7308 番地 ─────────────────────────────────────────────────── ─── Continuation of the front page (72) Inventor Christopher John Lennon United States 27511, Carrey, North Carolina, East Guerrell Court 104, etc. (72) Inventor Timothy Nelson Skags United States 27707, Durham, North Carolina Number E 5323 (72) Inventor Philip Anthony Smith 7308 Beacon Hill Court, Raleigh, NC 27604, USA

Claims (13)

【特許請求の範囲】[Claims] 【請求項1】コンピュータ・システム内のメッセージ送
信プロセスとメッセージ受信プロセスの間でメッセージ
を伝達する方法であって、 受信プロセスにより、その受信プロセスの一端で終端し
前記コンピュータ・システムのオペレーティングシステ
ムにより管理される通信チャネルを生成し、前記チャネ
ルを介して受信プロセスが受信したいメッセージ・タイ
プに対応するチャネルにシステム名を割当てるステップ
と、 選択されたメッセージ・タイプのメッセージを送信する
送信プロセスが前記選択されたメッセージ・タイプに対
応する名前を有する通信チャネルを前記システム内にオ
ープンするステップと、 前記送信プロセスにより前記チャネルに前記メッセージ
を書込むステップと、 受信プロセスにより前記チャネルから前記メッセージを
読取るステップとを含み、 前記チャネルを生成し、オープンし、書込みかつ読取る
ステップは前記プロセスによるシステム機能呼出しに応
答して前記オペレーティングシステムにより実行される
メッセージ送受信プロセス間のメッセージ伝達方法。
1. A method of delivering a message between a message sending process and a message receiving process in a computer system, the receiving process terminating at one end of the receiving process and managed by the operating system of the computer system. Creating a communication channel to be assigned and assigning a system name to the channel corresponding to the message type that the receiving process wishes to receive via said channel; and the sending process to send a message of the selected message type is selected. A communication channel with a name corresponding to a different message type in the system; the sending process writing the message to the channel; and the receiving process writing from the channel to the message. A step of creating, opening, writing, and reading the channel, the steps of creating, opening, writing and reading the channel being performed by the operating system in response to a system function call by the process.
【請求項2】前記通信チャネルを生成するステップに続
いて、受信プロセスをメッセージを待つ所定の状態にす
るステップを含む請求項1のメッセージ送受信プロセス
間のメッセージ伝達方法。
2. The method of transmitting a message between message transmitting / receiving processes according to claim 1, further comprising the step of putting the receiving process into a predetermined state waiting for a message, following the step of generating the communication channel.
【請求項3】前記受信プロセスを所定の状態にするステ
ップは受信プロセスによるシステム機能呼出しに対応し
て前記オペレーティングシステムにより実行され、前記
チャネルの一端を受信プロセスで終端し、そして前記オ
ペレーティングシステムが送信プロセスからのチャネル
・オープン機能呼出しの受入れに対して待機するステッ
プを更に含む請求項2のメッセージ送受信プロセス間の
メッセージ伝達方法。
3. The step of putting the receiving process into a predetermined state is executed by the operating system in response to a system function call by the receiving process, terminating one end of the channel in the receiving process, and transmitting by the operating system. 3. The method of delivering messages between message sending and receiving processes of claim 2, further comprising the step of waiting for acceptance of a channel open function call from the process.
【請求項4】前記通信チャネルを介してメッセージの送
信に応答してシステム・セマフォアにより前記受信プロ
セスに警告するステップを更に含む請求項2又は請求項
3のメッセージ送受信プロセス間のメッセージ伝達方
法。
4. The method of transmitting a message between message transmitting / receiving processes according to claim 2, further comprising the step of alerting the receiving process by a system semaphore in response to the transmission of the message via the communication channel.
【請求項5】受信プロセスにより前記チャネルから読取
る前記ステップは、警告された後、システム機能呼出し
に応答する毎に、前記チャネルからメッセージ情報ブロ
ックを空のブロックを受取るまで読取るステップを更に
含む請求項4のメッセージ送受信プロセス間のメッセー
ジ伝達方法。
5. The step of reading from the channel by a receiving process further comprises the step of reading a message information block from the channel each time it responds to a system function call after being alerted until an empty block is received. 4. A message transmission method between the message transmission / reception processes of 4.
【請求項6】前記送信プロセスにより通信チャネルをオ
ープンするステップは送られるメッセージ・タイプに対
応する名前を有する前記システム内の全ての通信チャネ
ルをオープンするステップを更に含む請求項1のメッセ
ージ送受信プロセス間のメッセージ伝達方法。
6. The process of claim 1, wherein the step of opening a communication channel by the sending process further comprises the step of opening all communication channels in the system having a name corresponding to the message type being sent. Message delivery method.
【請求項7】前記チャネルにメッセージを書込むステッ
プは送られるメッセージ・タイプに対応する名前を有す
る全てのオープンされたチャネルに書込むステップを含
む請求項6のメッセージ送受信プロセス間のメッセージ
伝達方法。
7. The method of delivering messages between message sending and receiving processes of claim 6, wherein the step of writing a message to the channel includes the step of writing to all open channels having a name corresponding to the message type being sent.
【請求項8】メッセージ送信プロセスとメッセージ受信
プロセスの間でメッセージを伝達するコンピュータ・シ
ステムの機構であって、 通信チャネルを生成する手段、前記通信チャネルに命名
する手段、前記チャネルでメッセージを送信するために
前記チャネルの第一の端で前記チャネルをオープンする
手段、及び前記チャネルからメッセージを受信するため
に第二の端で前記チャネルをオープンする手段を備え、
前記プロセスから出されたシステム機能呼出しによりシ
ステム内のプロセス間の通信チャネルを管理するシステ
ム手段と、 受信プロセスが、前記チャネル生成手段を活用して受信
プロセスの一端で終端する通信チャネルを生成する手段
と、 受信プロセスが、前記チャネル命名手段を活用してチャ
ネルを介して受信プロセスが受信するメッセージ・タイ
プに対応するシステム名をチャネルに対して割当てる手
段と、 送信プロセスで、送信されるメッセージ・タイプに対応
する名前を有するチャネルをオープンする手段と、 送信プロセスで、前記チャネルにメッセージを書込む手
段と、 メッセージの受信プロセスに警告するシステム手段と、 受信プロセスで、前記チャネルからメッセージを読取る
手段とを備えるメッセージ送受信プロセス間でメッセー
ジを伝達する機構。
8. A mechanism for a computer system to communicate a message between a message sending process and a message receiving process, means for creating a communication channel, means for naming the communication channel, and sending a message on the channel. Means for opening the channel at a first end of the channel for opening, and means for opening the channel at a second end for receiving a message from the channel,
System means for managing a communication channel between processes in the system by a system function call issued from the process, and means for a receiving process to generate a communication channel terminating at one end of the receiving process by utilizing the channel generating means. A means for the receiving process to assign to the channel a system name corresponding to the message type received by the receiving process via the channel utilizing the channel naming means, and the message type sent by the sending process. Means for opening a channel having a name corresponding to, a sending process for writing a message to said channel, a system means for alerting a message receiving process, and a receiving process for reading a message from said channel. Between message sending and receiving processes with Mechanism for transmitting the message.
【請求項9】前記チャネルをオープンする送信プロセス
内の手段は送信されるメッセージ・タイプに対応する同
じ名前を有するチャネルの全てのインスタンスをオープ
ンする手段を更に備える請求項8のメッセージ送受信プ
ロセス間でメッセージを伝達する機構。
9. The message sending / receiving process of claim 8 wherein the means in the sending process for opening the channel further comprises means for opening all instances of the channel having the same name corresponding to the message type being sent. A mechanism for transmitting messages.
【請求項10】受信プロセスが送信プロセスが後のメッ
セージをそのチャネルを使用して送信できるようにする
ために、受信プロセッサが、先のメッセージを受信した
のち前記チャネルをリセットする手段を更に備える請求
項8のメッセージ送受信プロセス間でメッセージを伝達
する機構。
10. The receiving processor further comprises means for resetting the channel after the receiving process receives the previous message so that the receiving process allows the sending process to send a later message using that channel. A mechanism for transmitting a message between the message transmission / reception processes of item 8.
【請求項11】コンピュータ・システムにおいて受信プ
ロセスで終端する名前付きパイプを介して送信プロセス
からメッセージをメッセージ受信プロセスに伝達するた
めに用いられ、前記システムにより管理されるメッセー
ジ送信装置であって、 前記送信プロセスにより送られるメッセージ・タイプに
対応する名前を有する名前付きパイプのあらゆるインス
タンスをオープンする手段と、 前記名前付きパイプの各インスタンスにメッセージを書
込む手段とを含み、 前記システム手段はメッセージの名前付きパイプの各イ
ンスタンスに接続された受信プロセスに警告する手段を
含むメッセージ送信装置。
11. A message sending device, used in a computer system for delivering a message from a sending process to a message receiving process via a named pipe terminating in the receiving process, said message sending device being managed by said system, said message sending device comprising: The system means includes means for opening any instance of a named pipe having a name corresponding to the message type sent by the sending process, and means for writing a message to each instance of the named pipe, the system means A message sending device including means for alerting a receiving process connected to each instance of an attached pipe.
【請求項12】名前付きパイプの各インスタンスを、当
該パイプ・インスタンスにメッセージを書込んだ後に、
クローズする手段を含む請求項11のメッセージ送信装
置。
12. An instance of a named pipe, after writing a message to the pipe instance,
The message transmission device according to claim 11, further comprising means for closing.
【請求項13】コンピュータ・システムにおいて送信プ
ロセスからのメッセージをメッセージ受信プロセスに、
前記受信プロセスで終端し前記システムにより管理され
る名前付きパイプを介して、送信する方法であって、 前記送信プロセスが送信するメッセージ・タイプに対応
する名前をもつ名前付きパイプのあらゆるインスタンス
をオープンするステップと、 前記メッセージを名前付きパイプの各インスタンスに書
込み、前記システム手段が前記メッセージの前記名前付
きパイプの各インスタンスに関連した受信プロセスに自
動的に警告するステップとを含むメッセージ送信方法。
13. A message from a sending process to a message receiving process in a computer system,
A method of sending through a named pipe terminated by the receiving process and managed by the system, which opens any instance of the named pipe with a name corresponding to a message type sent by the sending process. A method of sending a message comprising the steps of: writing the message to each instance of the named pipe, and wherein the system means automatically alerts a receiving process associated with each instance of the named pipe of the message.
JP4199504A 1991-09-30 1992-07-27 Method and process for interprocess communication using named pipes Expired - Lifetime JPH0797323B2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US76759591A 1991-09-30 1991-09-30
US767595 1991-09-30

Publications (2)

Publication Number Publication Date
JPH05204673A true JPH05204673A (en) 1993-08-13
JPH0797323B2 JPH0797323B2 (en) 1995-10-18

Family

ID=25079971

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4199504A Expired - Lifetime JPH0797323B2 (en) 1991-09-30 1992-07-27 Method and process for interprocess communication using named pipes

Country Status (4)

Country Link
US (1) US5448734A (en)
EP (1) EP0536073A3 (en)
JP (1) JPH0797323B2 (en)
BR (1) BR9203584A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002269063A (en) * 2001-03-07 2002-09-20 Toshiba Corp Messaging program, messaging method in distributed system, and messaging system
JP2024502340A (en) * 2021-11-23 2024-01-18 シャンハイ トサン テクノロジー リミテッド Software host construction method, construction system, software host and simulation device

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5396616A (en) * 1993-06-15 1995-03-07 Xerox Corporation System for emulating multi-tasking pipelines in a single tasking environment
US5701479A (en) * 1993-06-15 1997-12-23 Xerox Corporation Pipelined image processing system for a single application environment
US5995996A (en) * 1993-06-15 1999-11-30 Xerox Corporation Pipelined image processing system for a single application environment
US5732269A (en) * 1995-04-21 1998-03-24 International Business Machines Corporation Data adapter transparent to application I/O path
US6647432B1 (en) * 1996-08-19 2003-11-11 Geoquest, A Division Of Schlumberger Technology Corporation Distributed framework for intertask communication between workstation applications
US6073139A (en) * 1996-08-15 2000-06-06 Gioquest, A Division Of Schlumberger Technology Corp. Integrated data communication and data access system including the application data interface
US6401109B1 (en) 1996-11-18 2002-06-04 International Business Machines Corp. Virtual socket for JAVA interprocess communication
US6219717B1 (en) * 1996-11-20 2001-04-17 Merrill Lynch & Co., Inc. Method and apparatus for implementing object transparent invocation
US6061771A (en) * 1997-04-30 2000-05-09 International Business Machines Corporation Cross-system data piping system using an external shared memory
US6092166A (en) * 1997-04-30 2000-07-18 International Business Machines Corporation Cross-system data piping method using an external shared memory
US6170045B1 (en) * 1997-04-30 2001-01-02 International Business Machines Corporation Cross-system data piping using an external shared memory
US6199102B1 (en) 1997-08-26 2001-03-06 Christopher Alan Cobb Method and system for filtering electronic messages
US6345312B1 (en) * 1997-08-28 2002-02-05 International Business Machines Corporation Selectively dummying a data pipe transparent to a writer application
US6249910B1 (en) * 1998-05-04 2001-06-19 Hewlett-Packard Company Apparatus and method for incrementally update static single assignment form for cloned variable name definitions
US6901596B1 (en) * 1998-05-07 2005-05-31 Hewlett-Packard Development Company, L.P. Method of communicating asynchronous events to remote procedure call clients
US6112227A (en) 1998-08-06 2000-08-29 Heiner; Jeffrey Nelson Filter-in method for reducing junk e-mail
US6671742B1 (en) * 1999-06-15 2003-12-30 At&T Corp. Method and apparatus for unifield control and data event exchange in a software system
US6877160B2 (en) * 2000-11-30 2005-04-05 International Business Machines Corporation Method, apparatus and program storage device for enabling the reading of data from a named pipe while minimizing the use of system resources
US20020078251A1 (en) * 2000-12-18 2002-06-20 Philips Electronics North America Corp. Self-determining command path architecture
US7516182B2 (en) * 2002-06-18 2009-04-07 Aol Llc Practical techniques for reducing unsolicited electronic messages by identifying sender's addresses
US7620691B1 (en) 2003-02-10 2009-11-17 Aol Llc Filtering electronic messages while permitting delivery of solicited electronics messages
US7290033B1 (en) 2003-04-18 2007-10-30 America Online, Inc. Sorting electronic messages using attributes of the sender address
US7590695B2 (en) 2003-05-09 2009-09-15 Aol Llc Managing electronic messages
US7627635B1 (en) 2003-07-28 2009-12-01 Aol Llc Managing self-addressed electronic messages
US20050125667A1 (en) * 2003-12-09 2005-06-09 Tim Sullivan Systems and methods for authorizing delivery of incoming messages
US7882360B2 (en) 2003-12-19 2011-02-01 Aol Inc. Community messaging lists for authorization to deliver electronic messages
US20050193130A1 (en) * 2004-01-22 2005-09-01 Mblx Llc Methods and systems for confirmation of availability of messaging account to user
US7469292B2 (en) * 2004-02-11 2008-12-23 Aol Llc Managing electronic messages using contact information
US7650383B2 (en) 2005-03-15 2010-01-19 Aol Llc Electronic message system with federation of trusted senders
US7647381B2 (en) 2005-04-04 2010-01-12 Aol Llc Federated challenge credit system
US7870558B2 (en) * 2005-07-15 2011-01-11 Microsoft Corporation Handle passing using an inter-process communication
TW200839561A (en) * 2007-03-22 2008-10-01 Wistron Corp Method of irregular password configuration and verification
BR102013007167B1 (en) * 2013-03-27 2021-06-15 Universidade Estadual De Campinas - Unicamp AUTOMATED SYSTEM FOR SOLID PHASE EXTRACTION
US10394620B2 (en) * 2016-11-21 2019-08-27 International Business Machines Corporation Method for changing allocation of data using synchronization token
CN108829526B (en) * 2018-05-08 2021-02-02 武汉斗鱼网络科技有限公司 An inter-process communication method, electronic device and readable storage medium

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01134534A (en) * 1987-11-20 1989-05-26 Nec Corp Inter-process mutual communication system
JPH0390937A (en) * 1989-09-01 1991-04-16 Nippon Telegr & Teleph Corp <Ntt> Program control system

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4470115A (en) * 1982-03-12 1984-09-04 Bell Telephone Laboratories Incorporated Input/output method
US4825354A (en) * 1985-11-12 1989-04-25 American Telephone And Telegraph Company, At&T Bell Laboratories Method of file access in a distributed processing computer network
US5165024A (en) * 1990-04-12 1992-11-17 Apple Computer, Inc. Information transfer and receiving system with a ring interconnect architecture using voucher and ticket signals

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01134534A (en) * 1987-11-20 1989-05-26 Nec Corp Inter-process mutual communication system
JPH0390937A (en) * 1989-09-01 1991-04-16 Nippon Telegr & Teleph Corp <Ntt> Program control system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002269063A (en) * 2001-03-07 2002-09-20 Toshiba Corp Messaging program, messaging method in distributed system, and messaging system
JP2024502340A (en) * 2021-11-23 2024-01-18 シャンハイ トサン テクノロジー リミテッド Software host construction method, construction system, software host and simulation device

Also Published As

Publication number Publication date
EP0536073A3 (en) 1993-09-22
BR9203584A (en) 1993-04-13
US5448734A (en) 1995-09-05
JPH0797323B2 (en) 1995-10-18
EP0536073A2 (en) 1993-04-07

Similar Documents

Publication Publication Date Title
JPH05204673A (en) Method and process of communication between process using named pipe
US5758084A (en) Apparatus for parallel client/server communication having data structures which stored values indicative of connection state and advancing the connection state of established connections
US5212792A (en) Method and apparatus for controlling execution of tools in a computer-aided software engineering system
US6470398B1 (en) Method and apparatus for supporting a select () system call and interprocess communication in a fault-tolerant, scalable distributed computer environment
US5483647A (en) System for switching between two different operating systems by invoking the server to determine physical conditions to initiate a physical connection transparent to the user
US6901596B1 (en) Method of communicating asynchronous events to remote procedure call clients
US5396630A (en) Method and system for object management across process boundries in a data processing system
JP3691515B2 (en) Event distribution apparatus and method in operating system
US5434975A (en) System for interconnecting a synchronous path having semaphores and an asynchronous path having message queuing for interprocess communications
US6633899B1 (en) Dynamic installation and configuration broker
US5062040A (en) Handling of notification of asynchronous events by user and stub processes of a distributed process executing on a plurality of processors of a multi-processor system
JP4690437B2 (en) Communication method, communication apparatus and program for network application
US6557046B1 (en) Method and system for providing an event system infrastructure
US6415332B1 (en) Method for handling of asynchronous message packet in a multi-node threaded computing environment
CN100511206C (en) Inter-processor communication system in parallel processing system by single processor operating system
EP1099164A1 (en) Methods and apparatus for processing administrative requests of a distributed network application executing in a clustered computing environment
US6378004B1 (en) Method of communicating asynchronous elements from a mini-port driver
KR100250464B1 (en) How to Boot a Node on a High-Speed Parallel Computer
US6385659B1 (en) Handling of asynchronous message packet in a multi-node threaded computing environment
US6412018B1 (en) System for handling asynchronous message packet in a multi-node threaded computing environment
EP1265148B1 (en) Using software interrupts to manage communication between data processors
US7552440B1 (en) Process communication multiplexer
JPH04291660A (en) Inter-processor communication method and its parallel processor
JPH09160847A (en) Client / server distributed processing system
US20020129144A1 (en) Data processing method and apparatus