<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Forum Pasja Informatyki - Najnowsze z tagiem dzielona</title>
<link>https://forum.pasja-informatyki.pl/tag/dzielona</link>
<description>Powered by Question2Answer</description>
<item>
<title>Pamięć dzielona</title>
<link>https://forum.pasja-informatyki.pl/437909/pamiec-dzielona</link>
<description>Hejka. Chciałam Was zapytać, czy pamięć dzielona jest wykonywana jako sposób komunikacji:&lt;br /&gt;
a) tylko i wyłącznie między dwoma procesami&lt;br /&gt;
b) między procesami&lt;br /&gt;
&lt;br /&gt;
Która z tych odpowiedzi jest prawidłowa? Byłabym wdzięczna za pomoc. :) PS. Wydaje mi się, że b) Ale nie jest sprecyzowane to w internecie :P</description>
<category>Rozwój zawodowy, nauka, praca</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/437909/pamiec-dzielona</guid>
<pubDate>Mon, 01 Jul 2019 14:15:44 +0000</pubDate>
</item>
<item>
<title>Komunikacja poprzez pamięc dzieloną na Linux, język C</title>
<link>https://forum.pasja-informatyki.pl/201099/komunikacja-poprzez-pamiec-dzielona-na-linux-jezyk-c</link>
<description>

&lt;p&gt;Cześć. Mam program do komunikacji międzyprocesowej, tworzący segment pamięci dzielonej pozwalający zapisywać i odczytywać komunikaty.
&lt;br&gt;

&lt;br&gt;
Mam problem z dodaniem opcji żeby moje komunikaty zapisywały się w tablicy w segmencie pamięci dzielonej w taki sposób:
&lt;br&gt;

&lt;br&gt;
- zapisz k &quot;komunikat&quot; - zapisz komunikat w wierszu k tablicy stringów w pamięci dzielonej,
&lt;br&gt;
- odczytaj k - odczytaj komunikat z wiersza k tablicy w pamięci dzielonej.&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Jak to zrobić?&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;sys/types.h&amp;gt;
#include &amp;lt;sys/ipc.h&amp;gt;
#include &amp;lt;sys/shm.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;string.h&amp;gt;

#define SEGSIZE 100

main( int argc, char * argv[] )
{
    int shmid, cntr;
    char * segptr;
   
    /* Jeśli nie wpisano parametru przejdź do usage() */
    if( argc == 1 )
         usage();
   
    /* utwórz unikalny klucz poprzez wywołanie ftok() */
    key_t key;
    key = ftok( &quot;.&quot;, 'S' );
   
    /* otwórz segment pamięci dzielonej - utwórz jeżeli trzeba; nadanie praw do segmentu */
    if(( shmid = shmget( key, SEGSIZE, IPC_CREAT | IPC_EXCL | 0666 ) ) == - 1 )
    {
        printf( &quot;Segment pamięci dzielonej istnieje - otwieram jako klient\n&quot; );
       
        /* Segment prawdopodobnie istnieje - próbuję otworzyć jako klient */
        if(( shmid = shmget( key, SEGSIZE, 0 ) ) == - 1 )
        {
            perror( &quot;shmget&quot; );
            exit( 1 );
        }
    }
    else
    {
        printf( &quot;Tworzenie nowego segmentu pamięci dzielonej\n&quot; );
    }
   
    /* Podłącz segment pamięci dzielonej do tego procesu */
    if(( segptr = shmat( shmid, 0, 0 ) ) == - 1 )
    {
        perror( &quot;shmat&quot; );
        exit( 1 );
    }
    /* Wybór funkcji zapisu/odczytu ze zmianą dużej litery na małą */
    switch( tolower( argv[ 1 ][ 0 ] ) )
    {
    case 'z': writeshm( shmid, segptr, argv[ 2 ] );
        break;
    case 'o': readshm( shmid, segptr );
        break;
        /* Jeśli wybrano zły parametr przechodzi do usage() */
        default: usage();
       
    }
}
/* Zapisuje w pamięci wpisany text */
writeshm( int shmid, char * segptr, char * text )
{
    strcpy( segptr, text );
    printf( &quot;Zrobiono...\n&quot; );
}
/* Zwraca na stdout wartości zapisane w pamięci */
readshm( int shmid, char * segptr )
{
    printf( &quot;segptr: %s\n&quot;, segptr );
}

/* Wyświetla schemat prawidłowego wywołania programu */
usage()
{
    fprintf( stderr, &quot;Program do komunikacji międzyprocesowej\n&quot; );
    fprintf( stderr, &quot;\nPOSTAĆ WYWOŁANIA:  &amp;lt;nazwa programu&amp;gt; (z)apisz &amp;lt;text&amp;gt;\n&quot; );
    fprintf( stderr, &quot;     (o)dczytaj\n&quot; );
   
    exit( 1 );
}&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/201099/komunikacja-poprzez-pamiec-dzielona-na-linux-jezyk-c</guid>
<pubDate>Mon, 28 Nov 2016 11:46:52 +0000</pubDate>
</item>
<item>
<title>Sprawdzanie czy liczba dzielona to 0</title>
<link>https://forum.pasja-informatyki.pl/131263/sprawdzanie-czy-liczba-dzielona-to-0</link>
<description>

&lt;p&gt;Witam,&lt;/p&gt;



&lt;p&gt;Mam problem dotyczący sprawdzania czy 2 wpisana liczba 'dzielona' jest 0. Jeśli jest to ma się nie wykonać a jeśli else to się wykonuje.&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
case 4:
{
	cout &amp;lt;&amp;lt; tr (&quot;Podaj liczbę 1: &quot;);
	cin &amp;gt;&amp;gt; liczba[0];
	cout &amp;lt;&amp;lt; tr (&quot;Podaj liczbę 2: &quot;);
	cin &amp;gt;&amp;gt; liczba[1];
	if(liczba[1]==0)
	{
		cout &amp;lt;&amp;lt; &quot;Nie dzielimy przez zero!&quot;;
		break;
	}
	cout &amp;lt;&amp;lt; &quot;Wynik dzielenia: &quot; &amp;lt;&amp;lt; liczba[0]/liczba[1];
	break;
}&lt;/pre&gt;



&lt;p&gt;Chodzi o to, że jeśli wpiszemy liczba[1] jako 0 to wyświetla się if ale jeśli zaś liczba jest normalną, podzielną to wynik równa się NULL '0'.&lt;/p&gt;



&lt;p&gt;cout nie czyta tekstu wpisanego w cin po if'ie?&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/131263/sprawdzanie-czy-liczba-dzielona-to-0</guid>
<pubDate>Sun, 17 Apr 2016 19:57:42 +0000</pubDate>
</item>
</channel>
</rss>