<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>C : coups de cœur et coups de gueule &#187; L&#039;environnement</title>
	<atom:link href="https://blog.developpez.com/kirilenko/pcategory/lenvironnement/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/kirilenko</link>
	<description>Write in C!</description>
	<lastBuildDate>Sat, 20 Apr 2013 16:54:09 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Fork déchiffré</title>
		<link>https://blog.developpez.com/kirilenko/p10645/lenvironnement/fork_dechiffre</link>
		<comments>https://blog.developpez.com/kirilenko/p10645/lenvironnement/fork_dechiffre#comments</comments>
		<pubDate>Wed, 11 Jan 2012 18:36:32 +0000</pubDate>
		<dc:creator><![CDATA[Kirilenko]]></dc:creator>
				<category><![CDATA[L&#039;environnement]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[La fonction fork() peut paraître un peu surprenante au premier abord. La question que vous pouvez légitimement vous poser est : que fait un fork() ? Cet appel-système alloue un bloc de contrôle dans la table des processus, copie certaines des informations du bloc du père (fichiers ouverts, répertoire courant, etc.) dans le bloc du fils. Il alloue un PID au processus fils. Le noyau alloue le segment texte du processus, dans lequel il place [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>La fonction fork() peut paraître un peu surprenante au premier abord. La question que vous pouvez légitimement vous poser est : que fait un fork() ?</p>
<p>Cet appel-système alloue un bloc de contrôle dans la table des processus, copie certaines des informations du bloc du père (fichiers ouverts, répertoire courant, etc.) dans le bloc du fils. Il alloue un PID au processus fils.<br />
Le noyau alloue le segment texte du processus, dans lequel il place son code. Le segment de données et la pile ne seront alloués que plus tard, lorsque l&rsquo;utilisateur tentera de les utiliser. Cette technique, appelée copy on write, permet de réduire les coûts de l&rsquo;allocation. Enfin, l&rsquo;état du processus est mis à la valeur exécution.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Les variables d&#8217;environnement</title>
		<link>https://blog.developpez.com/kirilenko/p10640/lenvironnement/les_variables_d_environnement</link>
		<comments>https://blog.developpez.com/kirilenko/p10640/lenvironnement/les_variables_d_environnement#comments</comments>
		<pubDate>Tue, 10 Jan 2012 18:00:53 +0000</pubDate>
		<dc:creator><![CDATA[Kirilenko]]></dc:creator>
				<category><![CDATA[L&#039;environnement]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Une application peut s&#8217;exécuter dans des contextes très différents. Le répertoire courant, le répertoire personnel de l&#8217;utilisateur, le type de terminal, entres autres, sont indiqués par des variables d&#8217;environnement. En pratique, les variables d&#8217;environnement sont des chaînes de caractère sous la forme NOM=VALEUR. Elles sont modifiées par les fichiers d&#8217;initialisation du shell par exemple. Pour accéder aux variables d&#8217;environnement d&#8217;un processus dans un programme codé en C, il suffit d&#8217;utiliser le tableau environ, une variable [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Une application peut s&rsquo;exécuter dans des contextes très différents. Le répertoire courant, le répertoire personnel de l&rsquo;utilisateur, le type de terminal, entres autres, sont indiqués par des <strong>variables d&rsquo;environnement</strong>.</p>
<p>En pratique, les variables d&rsquo;environnement sont des chaînes de caractère sous la forme NOM=VALEUR. Elles sont modifiées par les fichiers d&rsquo;initialisation du shell par exemple.</p>
<p>Pour accéder aux variables d&rsquo;environnement d&rsquo;un processus dans un programme codé en C, il suffit d&rsquo;utiliser le tableau environ, une  variable globale. Il faut le déclarer en début de programme car il n&rsquo;est pas définit dans les fichiers d&rsquo;en-têtes standards.</p>
<p><code class="codecolorer text default"><span class="text">extern char **environ;</span></code></p>
<p>Il contient des chaînes de caractères se terminant par le caractère &lsquo;\0&prime;, et se termine lui-même par un pointeur nul.</p>
<p>Exemple de programme listant les variables d&rsquo;environnement du processus principal.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">#include &lt;stdio.h&gt; <br />
#include &lt;stdlib.h&gt; <br />
&nbsp;<br />
extern char **environ; <br />
&nbsp;<br />
int main(void) { <br />
&nbsp; unsigned i; <br />
&nbsp; for (i = 0; environ[i] != NULL; i++) { <br />
&nbsp; &nbsp; fprintf(stdout, &quot;%s\n&quot;, environ[i]); <br />
&nbsp; } <br />
&nbsp; return EXIT_SUCCESS; <br />
}</div></div>
<p>Notez qu&rsquo;il existe également une autre solution pour lister les variables d&rsquo;environnement du processus principal, bien que moins recommandée. En effet, il est possible d&rsquo;utiliser un troisième argument de la fonction main(), envp, qui se comporte comme environ. Exemple :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">#include &lt;stdio.h&gt; <br />
#include &lt;stdlib.h&gt; <br />
&nbsp;<br />
int main(int argc, char *argv[], char *envp[]) { <br />
&nbsp; unsigned i; <br />
&nbsp; for (i = 0; envp[i] != NULL; i++) { <br />
&nbsp; &nbsp; fprintf(stdout, &quot;%s\n&quot;, envp[i]); <br />
&nbsp; } <br />
&nbsp; (void) argc; <br />
&nbsp; (void) argv; <br />
&nbsp; return EXIT_SUCCESS; <br />
}</div></div>
<p>Bon codage !</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
