All Topics  
Inter-process communication

 

   Email Print
   Bookmark   Link






 

Inter-process communication



 
 
Inter-Process Communication (IPC) is a set of techniques for the exchange of data among multiple threads
Thread (computer science)

In computer science, a thread of execution is a Fork of a computer program into two or more Concurrency running task s. The implementation of threads and process es differs from one operating system to another, but in most cases, a thread is contained inside a process....
 in one or more processes
Process (computing)

In computing, a process is an Object of a computer program that is being sequentially executed by a computer system that has the ability to run several computer programs Concurrency ....
. Processes may be running on one or more computers connected by a network
Computer network

A computer network is a group of interconnected computers. Networks may be classified according to a wide variety of characteristics. This article provides a general overview of some types and categories and also presents the basic components of a network....
. IPC techniques are divided into methods for message passing
Message passing

Message passing in computer science, is a form of communication used in parallel computing, object-oriented programming, and interprocess communication....
, synchronization
Synchronization (computer science)

In computer science, synchronization refers to one of two distinct but related concepts: synchronization of process , and synchronization of data....
, shared memory
Shared memory

In computing, shared memory is a memory that may be simultaneously accessed by multiple programs with an intent to provide communication among them or avoid redundant copies....
, and remote procedure call
Remote procedure call

Remote procedure call is an Inter-process communication technology that allows a computer program to cause a subroutine or procedure to execute in another address space without the programmer explicitly coding the details for this remote interaction....
s (RPC). The method of IPC used may vary based on the bandwidth and latency of communication between the threads, and the type of data being communicated.

IPC may also be referred to as inter-thread communication and inter-application communication.

IPC, on par with the address space
Address space

In computing, an address space defines a range of discrete addresses, each of which may correspond to a physical or virtual memory register, a Node , peripheral device, disk sector or other logical or physical entity....
 concept, is the foundation for address space independence/isolation.

e are a number of APIs which may be used for IPC.






Discussion
Ask a question about 'Inter-process communication'
Start a new discussion about 'Inter-process communication'
Answer questions from other users
Full Discussion Forum



Encyclopedia


Inter-Process Communication (IPC) is a set of techniques for the exchange of data among multiple threads
Thread (computer science)

In computer science, a thread of execution is a Fork of a computer program into two or more Concurrency running task s. The implementation of threads and process es differs from one operating system to another, but in most cases, a thread is contained inside a process....
 in one or more processes
Process (computing)

In computing, a process is an Object of a computer program that is being sequentially executed by a computer system that has the ability to run several computer programs Concurrency ....
. Processes may be running on one or more computers connected by a network
Computer network

A computer network is a group of interconnected computers. Networks may be classified according to a wide variety of characteristics. This article provides a general overview of some types and categories and also presents the basic components of a network....
. IPC techniques are divided into methods for message passing
Message passing

Message passing in computer science, is a form of communication used in parallel computing, object-oriented programming, and interprocess communication....
, synchronization
Synchronization (computer science)

In computer science, synchronization refers to one of two distinct but related concepts: synchronization of process , and synchronization of data....
, shared memory
Shared memory

In computing, shared memory is a memory that may be simultaneously accessed by multiple programs with an intent to provide communication among them or avoid redundant copies....
, and remote procedure call
Remote procedure call

Remote procedure call is an Inter-process communication technology that allows a computer program to cause a subroutine or procedure to execute in another address space without the programmer explicitly coding the details for this remote interaction....
s (RPC). The method of IPC used may vary based on the bandwidth and latency of communication between the threads, and the type of data being communicated.

IPC may also be referred to as inter-thread communication and inter-application communication.

IPC, on par with the address space
Address space

In computing, an address space defines a range of discrete addresses, each of which may correspond to a physical or virtual memory register, a Node , peripheral device, disk sector or other logical or physical entity....
 concept, is the foundation for address space independence/isolation.

Implementations

There are a number of APIs which may be used for IPC. A number of platform independent APIs include the following:
  • Anonymous pipe
    Anonymous pipe

    In computer science, an anonymous pipe is a simplex channel FIFO communication channel that may be used for one-way interprocess communication. An implementation is often integrated into the operating system's file IO subsystem....
    s and named pipe
    Named pipe

    In computing, a named pipe is an extension to the traditional pipeline concept on Unix and Unix-like systems, and is one of the methods of inter-process communication....
    s
  • Common Object Request Broker Architecture
    Common Object Request Broker Architecture

    The Common Object Requesting Broker Architecture is a Standardization defined by the Object Management Group that enables software componentry written in multiple programming language and running on multiple computers to work together....
     (CORBA)
  • Freedesktop.org
    Freedesktop.org

    freedesktop.org is a project to work on interoperability and shared base technology for free software desktop environments for the X Window System on Linux and other Unix-like operating systems....
    's D-Bus
    D-Bus

    D-Bus is a simple inter-process communication system for software applications to communicate with one another. D-Bus was heavily influenced by KDE2–3's DCOP system and has replaced it in the KDE 4 release; it is supported on Linux, Microsoft Windows and Apple OS X operating systems and is used by Qt 4 and GNOME....
  • Distributed Computing Environment
    Distributed Computing Environment

    The Distributed Computing Environment is a software system developed in the early 1990s by a consortium that included Apollo Computer , IBM, Digital Equipment Corporation, and others....
     (DCE)
  • Message Bus (MBUS) (specified in RFC 3259)
  • Lightweight Communications and Marshalling (LCM)
  • ONC RPC
  • Sockets
  • XML XML-RPC
    XML-RPC

    XML-RPC is a remote procedure call protocol which uses XML to encode its calls and [] as a transport mechanism. ...
     or SOAP
  • Thrift
    Thrift (protocol)

    Thrift is a remote procedure call framework developed at Facebook for "scalable cross-language services development". It combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, C Sharp , Java , Perl, Python , PHP, Erlang and Ruby ....
  • TIPC
    TIPC

    Transparent Inter-process Communication is a network communications protocol for Inter-process communication that was specially designed for intra-cluster communication....
  • ZeroC
    ZeroC

    ZeroC, Inc. is a company based in Palm Beach Gardens, Florida, Florida, United States, revolving around the development and licensing of the Internet Communications Engine, or ICE, an object middleware system considered an alternative to CORBA and SOAP....
    's Internet Communications Engine
    Internet Communications Engine

    The Internet Communications Engine, or Ice, is an object-oriented middleware that provides object-oriented Remote Procedure Call, grid computing, and Publish/subscribe functionality developed by ZeroC and dual license under the GNU GPL and a proprietary license....
     (ICE)


The following are platform or programming language specific APIs:
  • Apple Computer
    Apple Computer

    Apple Inc., formerly Apple Computer Inc., is an United States multinational corporation which designs and manufactures consumer electronics and software products....
    's Apple events
    Apple events

    Apple events are the canonical message-based interprocess communication mechanism in Mac OS, first appearing in System 7 and supported by every version since then, including Mac OS X....
     (previously known as Interapplication Communications (IAC)).
  • Java
    Java (programming language)

    Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java ....
    's Remote Method Invocation
    Java remote method invocation

    The Java Remote Method Invocation Application Programming Interface, or Java RMI, a Java application programming interface, performs the object-oriented equivalent of remote procedure calls....
     (RMI)
  • KDE
    KDE

    KDE is a free software project based around its flagship product, a desktop environment for Unix-like systems. The goal of the project is to provide basic desktop functions and applications for daily needs as well as tools and documentation for developers to write stand-alone applications for the system....
    's Desktop Communications Protocol
    DCOP

    DCOP, which stands for Desktop COmmunication Protocol, is a light-weight inter-process communication and software componentry communication system....
     (DCOP)
  • Libt2n
    Libt2n

    libt2n is a free software Library which offers a simple way for C++ applications to communicate with one another....
     for C++
    C++

    C++ is a general-purpose programming language. It is regarded as a middle-level language, as it comprises a combination of both high-level programming language and low-level programming language language features....
     under Linux only, handles complex objects and exceptions
  • The Mach kernel's Mach Ports
  • Microsoft
    Microsoft

    Microsoft Corporation is a multinational corporation computer technology corporation that develops, manufactures, licenses, and supports a wide range of computer software products for computing devices....
    's ActiveX
    ActiveX

    ActiveX is a component Object Model developed by Microsoft for Microsoft Windows. By using the Component Object Model runtime, developers can create Component-based software engineering that perform a particular function or a set of functions....
    , Component Object Model
    Component Object Model

    Component Object Model is an interface standard for software componentry introduced by Microsoft in 1993. It is used to enable interprocess communication and dynamic object creation in a large range of programming languages....
     (COM), Microsoft Transaction Server
    Microsoft Transaction Server

    Microsoft Transaction Server was software that provided services to Component Object Model Component-based software engineering, to make it easier to create large distributed applications....
     (COM+), Distributed Component Object Model
    Distributed component object model

    Distributed Component Object Model is a proprietary software Microsoft technology for communication among software componentry distributed across networked computers....
     (DCOM), Dynamic Data Exchange
    Dynamic Data Exchange

    Dynamic Data Exchange is a technology for communication between multiple applications under Microsoft Windows or OS/2....
     (DDE), Object Linking and Embedding
    Object Linking and Embedding

    Object Linking and Embedding is a technology that allows embedding and linking to documents and other objects developed by Microsoft. For developers, it brought OLE custom controls , a way to develop and use custom user interface elements....
     (OLE), anonymous pipes
    Anonymous pipe

    In computer science, an anonymous pipe is a simplex channel FIFO communication channel that may be used for one-way interprocess communication. An implementation is often integrated into the operating system's file IO subsystem....
    , named pipes
    Named pipe

    In computing, a named pipe is an extension to the traditional pipeline concept on Unix and Unix-like systems, and is one of the methods of inter-process communication....
    , Local Procedure Call
    Local Procedure Call

    The local procedure call facility is a service provided by the Microsoft Windows NT Kernel for light weight message queue between process es on the same computer....
    , Message loop
    Message loop in Microsoft Windows

    Microsoft Windows programs are Event-driven programming. They act upon Message passing that the operating system posts to the main application thread....
    , MSRPC
    MSRPC

    MSRPC is a modified version of DCE/RPC. Additions include support for Unicode strings, implicit handles, inheritance of interfaces , and complex calculations in the variable-length string and structure paradigms already present in DCE/RPC....
    , .NET Remoting
    .NET Remoting

    .NET Remoting is a Microsoft application programming interface for Inter-process communication released in 2002 with the 1.0 version of .NET Framework....
     and Windows Communication Foundation
    Windows Communication Foundation

    Windows Communication Foundation, or just WCF, is a programming framework used to build applications that inter-communicate. WCF is the part of the .NET Framework dedicated to communications....
  • Novell
    Novell

    Novell Inc. is a global software corporation based in the United States specializing in enterprise operating systems such as SUSE Linux distributions and Novell NetWare; identity, security and systems management solutions; and collaboration solutions....
    's SPX
    IPX/SPX

    IPX/SPX stands for Internetwork Packet Exchange/Sequenced Packet Exchange. IPX and SPX are networking protocols used primarily on networks using the Novell NetWare operating systems....
  • POSIX
    POSIX

    POSIX or "Portable Operating System Interface" is the collective name of a family of related standardizations specified by the Institute of Electrical and Electronics Engineers to define the application programming interface , along with shell and utilities interfaces for software compatible with variants of the Unix operating system, altho...
     mmap
    Mmap

    In computing, mmap is a POSIX-compliant Unix system call that maps files or devices into memory. It is a method of memory-mapped file I/O....
    , message queue
    Message queue

    In computer science, a message queue is a software engineering software componentry used for interprocess communication or inter-thread communication within the same process....
    s, semaphores
    Semaphore (programming)

    In computer science, a semaphore is a protected variable or abstract data type which constitutes the classic method for restricting access to shared resources such as shared memory in a multiprogramming environment....
    , and Shared memory
    Shared memory

    In computing, shared memory is a memory that may be simultaneously accessed by multiple programs with an intent to provide communication among them or avoid redundant copies....
  • RISC OS
    RISC OS

    RISC OS is a computer operating system which was originally developed by Acorn Computers Ltd in Cambridge, England for their ARM architecture based computers....
    's messages
  • Solaris
    Solaris Operating System

    Solaris is a Unix-based operating system introduced by Sun Microsystems in 1992 as the successor to SunOS.Solaris is known for its scalability, especially on SPARC systems, and for originating many innovative features such as DTrace and ZFS....
    's Doors
    Doors (computing)

    Doors are an inter-process communication facility for Unix computer systems. They provide a form of Subroutine....
  • System V's message queues, semaphores, and shared memory
    Shared memory

    In computing, shared memory is a memory that may be simultaneously accessed by multiple programs with an intent to provide communication among them or avoid redundant copies....
  • Distributed Ruby
    Distributed Ruby

    Distributed Ruby or DRb allows Ruby programs to communicate with each other on the same machine or over a network. DRb uses remote method invocation to pass commands and data between processes....
  • DIPC Distributed Inter-Process Communication


Table of IPC Methods:
Method Provided by (Operating system
Operating system

An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
s or other environments)
File
Computer file

A computer file is a block of arbitrary information, or resource for storing information, which is available to a computer program and is usually based on some kind of durable computer storage....
 
All operating system
Operating system

An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
s.
Signal
Signal (computing)

A signal is a limited form of inter-process communication used in Unix, Unix-like, and other POSIX-compliant operating systems. Essentially it is an asynchronous notification sent to a Process in order to notify it of an event that occurred....
 
Most operating system
Operating system

An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
s; some systems, such as Windows, only implement signals in the C run-time library and do not actually provide support for their use as an IPC technique.
Socket
Berkeley sockets

The Berkeley sockets application programming interface comprises a library for developing applications in the C that perform inter-process communication, most commonly across a computer network....
 
Most operating system
Operating system

An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
s.
Pipe
Pipeline (Unix)

In Unix-like computer operating systems, a pipeline is the original pipeline : a set of process es chained by their standard streams, so that the output of each process feeds directly as input of the next one....
 
All POSIX systems
POSIX

POSIX or "Portable Operating System Interface" is the collective name of a family of related standardizations specified by the Institute of Electrical and Electronics Engineers to define the application programming interface , along with shell and utilities interfaces for software compatible with variants of the Unix operating system, altho...
.
Named pipe
Named pipe

In computing, a named pipe is an extension to the traditional pipeline concept on Unix and Unix-like systems, and is one of the methods of inter-process communication....
 
All POSIX systems
POSIX

POSIX or "Portable Operating System Interface" is the collective name of a family of related standardizations specified by the Institute of Electrical and Electronics Engineers to define the application programming interface , along with shell and utilities interfaces for software compatible with variants of the Unix operating system, altho...
.
Semaphore
Semaphore (programming)

In computer science, a semaphore is a protected variable or abstract data type which constitutes the classic method for restricting access to shared resources such as shared memory in a multiprogramming environment....
 
All POSIX systems
POSIX

POSIX or "Portable Operating System Interface" is the collective name of a family of related standardizations specified by the Institute of Electrical and Electronics Engineers to define the application programming interface , along with shell and utilities interfaces for software compatible with variants of the Unix operating system, altho...
.
Shared memory
Shared memory

In computing, shared memory is a memory that may be simultaneously accessed by multiple programs with an intent to provide communication among them or avoid redundant copies....
 
All POSIX systems
POSIX

POSIX or "Portable Operating System Interface" is the collective name of a family of related standardizations specified by the Institute of Electrical and Electronics Engineers to define the application programming interface , along with shell and utilities interfaces for software compatible with variants of the Unix operating system, altho...
.
Message passing
Message passing

Message passing in computer science, is a form of communication used in parallel computing, object-oriented programming, and interprocess communication....
 
(shared nothing)
Used in MPI
Message Passing Interface

Message Passing Interface is a specification for an API that allows many computers to communicate with one another. It is used in computer clusters and supercomputers....
 paradigm, Java RMI, CORBA
Çorba

Chorba , shurpa , sorpa , or shorpo is one of various kinds of soup or stew found in national cuisines across Eurasia. The term is likely of Persian language or Turkic languages origin....
 and others.
memory-mapped file
Mmap

In computing, mmap is a POSIX-compliant Unix system call that maps files or devices into memory. It is a method of memory-mapped file I/O....
 
All POSIX systems
POSIX

POSIX or "Portable Operating System Interface" is the collective name of a family of related standardizations specified by the Institute of Electrical and Electronics Engineers to define the application programming interface , along with shell and utilities interfaces for software compatible with variants of the Unix operating system, altho...
; may carry race condition
Race condition

A race condition or race hazard is a flaw in a system or process whereby the output and/or result of the process is unexpectedly and critically dependent on the sequence or timing of other events....
 risk if a temporary file
Temporary file

Temporary files may be created by computer programs for a variety of purposes; principally when a program cannot allocate enough memory for its tasks, when the program is working on data bigger than architecture's address space, or as a primitive form of inter-process communication....
 is used. Windows also supports this technique but the APIs used are platform specific.
Message queue
Message queue

In computer science, a message queue is a software engineering software componentry used for interprocess communication or inter-thread communication within the same process....
 
Most operating system
Operating system

An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
s.
Mailbox Some operating system
Operating system

An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
s.


See also

  • Computer network programming
    Computer network programming

    In computing, network programming, essentially identical to Internet socket programming or client-server programming, involves writing computer programs that communicate with other programs across a computer network....
  • Communicating Sequential Processes
    Communicating sequential processes

    In computer science, Communicating Sequential Processes is a specification language for describing patterns of interaction in concurrent systems....
     (CSP paradigm)
  • .NET Remoting
    .NET Remoting

    .NET Remoting is a Microsoft application programming interface for Inter-process communication released in 2002 with the 1.0 version of .NET Framework....
  • Microkernel
    Microkernel

    In computer science, a microkernel is a computer kernel which provides the mechanisms needed to implement an operating system, such as low-level address space management, thread management, and inter-process communication....
  • Nanokernel
  • Protected procedure call
    Protected procedure call

    A Protected Procedure Call is a messaging facility wherein messages are sent and received using procedure call interfaces. They are a core component of the K42 operating system....


External links