<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://andromeda.df.lu.lv/wiki/index.php?action=history&amp;feed=atom&amp;title=LU-LSP-b13%3AL8</id>
	<title>LU-LSP-b13:L8 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://andromeda.df.lu.lv/wiki/index.php?action=history&amp;feed=atom&amp;title=LU-LSP-b13%3AL8"/>
	<link rel="alternate" type="text/html" href="http://andromeda.df.lu.lv/wiki/index.php?title=LU-LSP-b13:L8&amp;action=history"/>
	<updated>2026-04-11T22:19:09Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>http://andromeda.df.lu.lv/wiki/index.php?title=LU-LSP-b13:L8&amp;diff=8575&amp;oldid=prev</id>
		<title>Leo: Created page with &quot;== PD#10: Starprocesu komunikācija == === Vienkāršāki socketi === Kursa projektā izmantosim socketus zemākā līmenī, bet šoreiz priekš PD varat izmantot ērtāku ris...&quot;</title>
		<link rel="alternate" type="text/html" href="http://andromeda.df.lu.lv/wiki/index.php?title=LU-LSP-b13:L8&amp;diff=8575&amp;oldid=prev"/>
		<updated>2020-02-12T07:38:11Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== PD#10: Starprocesu komunikācija == === Vienkāršāki socketi === Kursa projektā izmantosim socketus zemākā līmenī, bet šoreiz priekš PD varat izmantot ērtāku ris...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== PD#10: Starprocesu komunikācija ==&lt;br /&gt;
=== Vienkāršāki socketi ===&lt;br /&gt;
Kursa projektā izmantosim socketus zemākā līmenī, bet šoreiz priekš PD varat izmantot ērtāku risinājumu:&lt;br /&gt;
* funkcija socketpair() noņem sarežģītību veidojot sockets&lt;br /&gt;
** atgriež pāri ar socketiem, ko var lietot līdzīgi kā pipe, lietojot fork()&lt;br /&gt;
** katrs no procesiem aizver nevajadzīgo faila deskriptoru&lt;br /&gt;
** Šie ir anonīmi socketi - tie neparādās ārpus procesiem un tiem nevar pieslēgties caur tīkla adresi. Tie izmanto domēna adreses/faila mehānismu, un loģiski nav derīgi socket savienojumam starp atsevišķiem datoriem tīklā.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Uzdevums ===&lt;br /&gt;
&lt;br /&gt;
Realizēt komunikāciju starp &amp;#039;&amp;#039;parent&amp;#039;&amp;#039; un &amp;#039;&amp;#039;child&amp;#039;&amp;#039; progammām ar &amp;#039;&amp;#039;socket&amp;#039;&amp;#039; palīdzību.&lt;br /&gt;
&lt;br /&gt;
Parent process padod child procesam ASCII rindiņu, kura satur divus skaitļus.&lt;br /&gt;
&lt;br /&gt;
Child process rindiņu nolasa (piemēram, ar scanf funkciju), saskaita skatļus, izvada rezultātu (kā ASCII rindiņu) atpakaļ parentam.&lt;br /&gt;
&lt;br /&gt;
Koda šablons:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/socket.h&amp;gt;&lt;br /&gt;
#include &amp;lt;unistd.h&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;string.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
    int ret = socketpair(AF_UNIX, SOCK_STREAM, 0, sock);&lt;br /&gt;
    if (ret) {&lt;br /&gt;
	perror(&amp;quot;socketpair&amp;quot;);&lt;br /&gt;
	return 1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // fork&lt;br /&gt;
&lt;br /&gt;
    // in parent code: write to socket, wait for reply, read it, and output it&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // in child code: read from socket, process arguments, write reply, exit&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Padomi ===&lt;br /&gt;
&lt;br /&gt;
* Izmantot funkciju &amp;#039;&amp;#039;fork()&amp;#039;&amp;#039;.&lt;br /&gt;
* Izmantot funkciju &amp;#039;&amp;#039;socketpair()&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Iesūtīšana ===&lt;br /&gt;
&lt;br /&gt;
Iesūtīt programmas C kodu estudijas.lu.lv&lt;/div&gt;</summary>
		<author><name>Leo</name></author>
		
	</entry>
</feed>