Symbian3/PDK/Source/GUID-AF07AD54-86F1-5DB7-80FF-633A559DA4BD.dita
changeset 3 46218c8b8afa
parent 1 25a17d01db0c
child 5 f345bda72bc4
equal deleted inserted replaced
2:ebc84c812384 3:46218c8b8afa
    27 to <codeph>fork()</codeph> and <codeph>exec()</codeph> for creating child
    27 to <codeph>fork()</codeph> and <codeph>exec()</codeph> for creating child
    28 processes</xref></p></li>
    28 processes</xref></p></li>
    29 <li><p><xref href="GUID-545DA961-217E-49CA-A90E-7A41E2C03A99.dita">Forking without <codeph>exec()</codeph></xref></p></li>
    29 <li><p><xref href="GUID-545DA961-217E-49CA-A90E-7A41E2C03A99.dita">Forking without <codeph>exec()</codeph></xref></p></li>
    30 <li><p><xref href="GUID-B58D282E-E6EC-4AE1-96DB-30A5FB850563.dita"><codeph>exec()</codeph> without
    30 <li><p><xref href="GUID-B58D282E-E6EC-4AE1-96DB-30A5FB850563.dita"><codeph>exec()</codeph> without
    31 forking using <apiname>posix_spawn()</apiname></xref></p></li>
    31 forking using <apiname>posix_spawn()</apiname></xref></p></li>
    32 </ul> <p><b>Omission of fork()</b> </p> <p>A Unix-like kernel
    32 </ul> <p><b>Omission of fork()</b> </p> <p>A Unix-like kernel is designed
    33 is designed with the two stage process creation in mind. On Symbian platform
    33 with the two stage process creation in mind. On the Symbian platform (and
    34 (and Microsoft Windows®) the kernel was designed to create a process, which
    34 Microsoft Windows®), the kernel was designed to create a process, which runs
    35 runs a single executable, in a single step. </p> <p>P.I.P.S. does not implement
    35 a single executable, in a single step. </p> <p>P.I.P.S. does not implement
    36 the <codeph>fork()</codeph> operation because this would require an entirely
    36 the <codeph>fork()</codeph> operation because this would require an entirely
    37 new way of dealing with processes in the kernel and memory model. For example,
    37 new way of dealing with processes in the kernel and memory model. For example,
    38 duplicating the address space of an existing process was not something that
    38 duplicating the address space of an existing process was not something that
    39 was considered in the Symbian platform kernel's design. Symbian took this
    39 was considered in the Symbian platform kernel's design. Symbian took this
    40 decision as the effort involved in customising this feature would be more
    40 decision as the effort involved in customising this feature would be more
    42 in the provision of Pthreads. For more information about Pthreads, see the <xref href="http://en.wikipedia.org/wiki/POSIX_Threads" scope="external">Pthread
    42 in the provision of Pthreads. For more information about Pthreads, see the <xref href="http://en.wikipedia.org/wiki/POSIX_Threads" scope="external">Pthread
    43 Wikipage</xref>. </p> <p><b>Omission of exec()</b> </p> <p>On Unix-like systems, <codeph>exec()</codeph> is
    43 Wikipage</xref>. </p> <p><b>Omission of exec()</b> </p> <p>On Unix-like systems, <codeph>exec()</codeph> is
    44 the standard way to load a process image into memory. Only the initialisation
    44 the standard way to load a process image into memory. Only the initialisation
    45 process is loaded directly into a new address space (special case code in
    45 process is loaded directly into a new address space (special case code in
    46 the kernel), all other processes are loaded into an existing address space
    46 the kernel), all other processes are loaded into an existing address space
    47 which was initially created by forking. </p> <p>On Symbian platform, the only
    47 which was initially created by forking. </p> <p>On the Symbian
    48 way to load a process image into memory is using the loader. It assumes that
    48 platform, the only way to load a process image into memory is using the loader.
    49 the image is being loaded as a new process - one that owns no resources, has
    49 It assumes that the image is being loaded as a new process - one that owns
    50 no open handles and so on. The change to the loader and any associated kernel
    50 no resources, has no open handles and so on. The change to the loader and
    51 changes, to support the <codeph>exec()</codeph> function were deemed to be
    51 any associated kernel changes, to support the <codeph>exec()</codeph> function
    52 too risky. </p> <p><b>Generic IPC</b> </p> <p>P.I.P.S. supports two types
    52 were deemed to be too risky. </p> <p><b>Generic IPC</b> </p> <p>P.I.P.S. supports
    53 of Inter-Process Communication (IPC) between processes or threads: </p> <ul>
    53 two types of Inter-Process Communication (IPC) between processes or threads: </p> <ul>
    54 <li><p> <b>Pipes (named and unnamed):</b> Unnamed pipes are created using <xref href="GUID-EC7F85FF-FD4E-324C-8D01-EF6F7E7A79FE.dita"><apiname>pipe()</apiname></xref> and
    54 <li><p> <b>Pipes (named and unnamed):</b> Unnamed pipes are created using <xref href="GUID-EC7F85FF-FD4E-324C-8D01-EF6F7E7A79FE.dita"><apiname>pipe()</apiname></xref> and
    55 named pipes are created using <xref href="GUID-F4749DAA-1B29-3D1D-A3AA-0D52B851E501.dita"><apiname>mkfifo()</apiname></xref>. Pipe-based communication
    55 named pipes are created using <xref href="GUID-F4749DAA-1B29-3D1D-A3AA-0D52B851E501.dita"><apiname>mkfifo()</apiname></xref>. Pipe-based communication
    56 is also possible between a parent and a child process when the child is created
    56 is also possible between a parent and a child process when the child is created
    57 using <xref href="GUID-A9DB6E7C-B8D6-377A-BBE6-39E0A7A09E5D.dita"><apiname>popen()</apiname></xref> or <xref href="GUID-A1E2E172-C4E4-30FB-99CF-E4140E31DF59.dita"><apiname>popen3()</apiname></xref>. </p></li>
    57 using <xref href="GUID-A9DB6E7C-B8D6-377A-BBE6-39E0A7A09E5D.dita"><apiname>popen()</apiname></xref> or <xref href="GUID-A1E2E172-C4E4-30FB-99CF-E4140E31DF59.dita"><apiname>popen3()</apiname></xref>. </p></li>
    58 <li><p> <b>Local file sockets:</b> These correspond to sockets created with <codeph>AF_LOCAL/PF_LOCAL/AF_UNIX</codeph> as
    58 <li><p> <b>Local file sockets:</b> These correspond to sockets created with <codeph>AF_LOCAL/PF_LOCAL/AF_UNIX</codeph> as