<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://so.v2.cs.unibo.it/wiki/index.php?action=history&amp;feed=atom&amp;title=Esercizio_1_Prova_Pratica_30-05-11</id>
	<title>Esercizio 1 Prova Pratica 30-05-11 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://so.v2.cs.unibo.it/wiki/index.php?action=history&amp;feed=atom&amp;title=Esercizio_1_Prova_Pratica_30-05-11"/>
	<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1_Prova_Pratica_30-05-11&amp;action=history"/>
	<updated>2026-05-15T00:01:43Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.5</generator>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1_Prova_Pratica_30-05-11&amp;diff=1130&amp;oldid=prev</id>
		<title>Davide.quadrelli2: Created page with &quot;&lt;source lang=&quot;text&quot;&gt; Scrivere due programmi in modo che i parametri passati al primo vengano stampati dal secondo. La comunicazione deve avvenire tramite una shared memory rea...&quot;</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1_Prova_Pratica_30-05-11&amp;diff=1130&amp;oldid=prev"/>
		<updated>2015-05-28T09:45:30Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt; Scrivere due programmi in modo che i parametri passati al primo vengano stampati dal secondo. La comunicazione deve avvenire tramite una shared memory rea...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Scrivere due programmi in modo che i parametri passati al&lt;br /&gt;
primo vengano stampati dal secondo. La comunicazione deve avvenire tramite una shared memory realizzata&lt;br /&gt;
con la chiamata POSIX shm_open, la sincronizzazione tramite segnali. Viene attivato per primo il programma&lt;br /&gt;
ricevente. (anche i pid dei processi possono venir scambiati attraverso la shared memory!).&lt;br /&gt;
Es: scrivere in un terminale:&lt;br /&gt;
$./receiver&lt;br /&gt;
l'esecuzione di “receiver rimane in attesa”. in un secondo terminale scrivere:&lt;br /&gt;
$./sender a bb ccc&lt;br /&gt;
nel primo deve comparire&lt;br /&gt;
./sender&lt;br /&gt;
a&lt;br /&gt;
bb&lt;br /&gt;
ccc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==Soluzione di Dado e Pierg==&lt;br /&gt;
&lt;br /&gt;
sender.c&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/mman.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/stat.h&amp;gt;&lt;br /&gt;
#include &amp;lt;fcntl.h&amp;gt; &lt;br /&gt;
&lt;br /&gt;
int main(int argc, char * argv[]){&lt;br /&gt;
	int fd,i;&lt;br /&gt;
	fd=shm_open(&amp;quot;/shared&amp;quot;,O_RDWR,'w');&lt;br /&gt;
	if(fd==-1){&lt;br /&gt;
		fprintf(stderr,&amp;quot;Error while opening the shared memory\n&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	for(i=0;i&amp;lt;argc;i++){&lt;br /&gt;
		write(fd,argv[i],sizeof(argv[i]));&lt;br /&gt;
		write(fd,&amp;quot;\n&amp;quot;,1);&lt;br /&gt;
	}&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
receiver.c&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/mman.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/stat.h&amp;gt;&lt;br /&gt;
#include &amp;lt;fcntl.h&amp;gt; &lt;br /&gt;
#define MAXLENGTH 1024&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char * argv[]){&lt;br /&gt;
	int fd;&lt;br /&gt;
	ssize_t dim;&lt;br /&gt;
	char buff[MAXLENGTH];&lt;br /&gt;
	fd=shm_open(&amp;quot;/shared&amp;quot;,O_RDWR,'r');&lt;br /&gt;
	while((dim=read(fd,&amp;amp;buff,MAXLENGTH))){&lt;br /&gt;
		write(stdout,buff,MAXLENGTH);&lt;br /&gt;
	}&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Davide.quadrelli2</name></author>
	</entry>
</feed>