Files
doc-fr/reference/shmop/functions/shmop-open.xml
2021-09-24 04:13:47 +01:00

191 lines
5.8 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: acf3ad4cdc54585998e54b69ff316ea697358e0b Maintainer: yannick Status: ready -->
<!-- Reviewed: yes -->
<refentry xml:id="function.shmop-open" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>shmop_open</refname>
<refpurpose>Crée ou ouvre un bloc de mémoire partagée</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>Shmop</type><type>false</type></type><methodname>shmop_open</methodname>
<methodparam><type>int</type><parameter>key</parameter></methodparam>
<methodparam><type>string</type><parameter>mode</parameter></methodparam>
<methodparam><type>int</type><parameter>permissions</parameter></methodparam>
<methodparam><type>int</type><parameter>size</parameter></methodparam>
</methodsynopsis>
<para>
<function>shmop_open</function> peut créer ou ouvrir un bloc
de mémoire partagée.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>key</parameter></term>
<listitem>
<para>
Identifiant système pour le bloc de mémoire partagé.
Ce paramètre peut être passé comme un décimal ou
un hexadécimal.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>mode</parameter></term>
<listitem>
<para>
Vous pouvez utiliser :
<itemizedlist>
<listitem>
<simpara>
<literal>"a"</literal> pour accès (utilise <literal>SHM_RDONLY</literal> pour shmat)
utilisez cette option pour ouvrir un bloc déjà existant en lecture
seule.
</simpara>
</listitem>
<listitem>
<simpara>
<literal>"c"</literal> pour création (utilise <literal>IPC_CREATE</literal>)
utilisez cette option pour créer un nouveau bloc, ou, si un
segment avec le même identifiant existe, essayer d'y accéder en
lecture et écriture.
</simpara>
</listitem>
<listitem>
<simpara>
<literal>"w"</literal> pour accès en lecture et écriture. Utilisez
cette option lorsque vous devez accéder en lecture et
écriture à un segment de mémoire partagée.
C'est le cas le plus courant.
</simpara>
</listitem>
<listitem>
<simpara>
<literal>"n"</literal> crée un nouveau segment de mémoire partagée
(utilise <literal>IPC_CREATE|IPC_EXCL</literal>). Utilisez cette option
lorsque vous voulez créer un nouveau segment de mémoire
partagée sauf s'il en existe déjà un corrompu avec la
même option. Ceci est très pratique pour des raisons
de sécurité, pour éviter des trous de sécurité
qui exploiteraient la course aux ressources.
</simpara>
</listitem>
</itemizedlist>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>permissions</parameter></term>
<listitem>
<para>
Les permissions que vous donnez à ce bloc. Ce sont
les mêmes que pour les fichiers. Ces permissions doivent
être passées sous forme d'octal (i.e. 0644).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>size</parameter></term>
<listitem>
<para>
La taille du bloc mémoire partagé que vous voulez créer, en octets
</para>
</listitem>
</varlistentry>
</variablelist>
<note>
<para>
Note : Les troisième et quatrième paramètres doivent être passés à 0 si vous
voulez ouvrir un bloc de mémoire partagée déjà existant.
</para>
</note>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
En cas de succès, <function>shmop_open</function> retourne une
instance de <classname>Shmop</classname> que vous pouvez utiliser pour accéder à la mémoire que
vous venez de créer. &false; sera retourné en cas d'échec.
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.0.0</entry>
<entry>
<parameter>shmop</parameter> attend une instance de <classname>Shmop</classname>
désormais; auparavant une <type>resource</type> était attendu.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Créer un nouveau bloc de mémoire partagée Shmop</title>
<programlisting role="php">
<![CDATA[
<?php
$shm_key = ftok(__FILE__, 't');
$shm_id = shmop_open($shm_key, "c", 0644, 100);
?>
]]>
</programlisting>
</example>
</para>
<para>
Cet exemple ouvre un nouveau bloc de mémoire partagée,
dont l'identifiant est retourné par <function>ftok</function>.
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>shmop_close</function></member>
<member><function>shmop_delete</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->