/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
    \page ipc.html
    \title Inter-Process Communication in Qt
    \brief Inter-Process communication in Qt applications.


    Qt provides several ways to implement Inter-Process Communication
    (IPC) in Qt applications.

    \section1 TCP/IP

    The cross-platform \l{Qt Network} module provides classes that make
    network programming portable and easy. It offers high-level
    classes (e.g. QNetworkAccessManager) that communicate using
    specific application-level protocols, and lower-level classes
    (e.g., QTcpSocket, QTcpServer, QSslSocket) for implementing
    protocols.

    \section1 Local Server/Socket

    The cross-platform \l{Qt Network} module provides classes that make
    local network programming portable and easy. It offers the QLocalServer
    and QLocalSocket classes that allow for network-like communication in a
    local setup. Their TCP counterparts can be used as drop-in replacement to
    make the communication work across networks.

    \section1 Shared Memory

    The cross-platform shared memory class, QSharedMemory, provides
    access to the operating system's shared memory implementation.
    It allows safe access to shared memory segments by multiple threads
    and processes. Additionally, QSystemSemaphore can be used to control
    access to resources shared by the system, as well as to communicate
    between processes.

    \section1 D-Bus protocol

    The \l{Qt D-Bus} module is a Unix-only library you can use to
    implement IPC using the D-Bus protocol. It extends Qt's
    \l{signalsandslots.html} {Signals and Slots} mechanism to the IPC
    level, allowing a signal emitted by one process to be connected to
    a slot in another process. The \l{Qt D-Bus} documentation has detailed
    information on how to use the \l{Qt D-Bus} module.


    \section1 QProcess Class

    The cross-platform class \l{QProcess} can be used to start external
    programs as child processes, and to communicate with them. It provides
    an API for monitoring and controlling the state of the child
    process. QProcess gives access to the input/output channels of child
    process by inheriting from QIODevice.

    \section1 Session Management

    On Linux/X11, Windows and macOS, Qt provides support for session
    management. Sessions allow events to be propagated to processes, for
    example, to notify when a shutdown occurs. The process and applications
    can then perform any necessary operations such as save open documents.

    \list
    \li \l{Session Management}
    \endlist

*/
