/****************************************************************************
**
** 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, QFtp) that communicate using
    specific application-level protocols, and lower-level classes
    (e.g., QTcpSocket, QTcpServer, QSslSocket) for implementing
    protocols.

    \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

    In Linux/X11 platforms, 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

*/
