<?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>EmbLogic &#187; ipc pipes</title>
	<atom:link href="https://www.emblogic.com/blog/tag/ipc-pipes/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.emblogic.com/blog</link>
	<description>Embedded System and ARM Training</description>
	<lastBuildDate>Tue, 03 Mar 2020 13:00:06 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.9.1</generator>
	<item>
		<title>IPC using Pipes for single user</title>
		<link>https://www.emblogic.com/blog/12/ipc-using-pipes-for-single-user/</link>
		<comments>https://www.emblogic.com/blog/12/ipc-using-pipes-for-single-user/#comments</comments>
		<pubDate>Wed, 30 Dec 2015 07:32:08 +0000</pubDate>
		<dc:creator><![CDATA[Ankur Garg]]></dc:creator>
				<category><![CDATA[Project 03: Client Server Communication using Linux and IPC]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Embedded Linux]]></category>
		<category><![CDATA[ipc]]></category>
		<category><![CDATA[ipc pipes]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[pipes]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=13097</guid>
		<description><![CDATA[RCS file: header.h,v Working file: header.h head: 1.2 branch: locks: strict root: 1.2 access list: symbolic names: keyword substitution: kv total revisions: 2;    selected revisions: 2 description: stdio.h , fcntl.h, unistd.h, sys/types.h are included. &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- revision 1.2    locked by: root; &#8230; <a href="https://www.emblogic.com/blog/12/ipc-using-pipes-for-single-user/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>RCS file: header.h,v<br />
Working file: header.h<br />
head: 1.2<br />
branch:<br />
locks: strict<br />
root: 1.2<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 2;    selected revisions: 2<br />
description:<br />
stdio.h , fcntl.h, unistd.h, sys/types.h are included.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2    locked by: root;<br />
date: 2015/12/20 20:30:34;  author: root;  state: Exp;  lines: +0 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2015/12/20 20:01:44;  author: root;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: request.h,v<br />
Working file: request.h<br />
head: 1.1<br />
branch:<br />
locks: strict<br />
root: 1.1<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 1;    selected revisions: 1<br />
description:<br />
It contains structure of request.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1    locked by: root;<br />
date: 2015/12/20 20:01:44;  author: root;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: adder.c,v<br />
Working file: adder.c<br />
head: 1.4<br />
branch:<br />
locks: strict<br />
root: 1.4<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 4;    selected revisions: 4<br />
description:<br />
A function for adding obj1 and obj2 which is contained in request received.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.4    locked by: root;<br />
date: 2015/12/20 21:52:27;  author: root;  state: Exp;  lines: +4 -4<br />
Printing changes.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.3<br />
date: 2015/12/20 21:32:16;  author: root;  state: Exp;  lines: +1 -0<br />
Printing mistake corrected.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2<br />
date: 2015/12/20 21:22:32;  author: root;  state: Exp;  lines: +12 -4<br />
Result is sent to server.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2015/12/20 21:06:23;  author: root;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: client1.c,v<br />
Working file: client1.c<br />
head: 1.13<br />
branch:<br />
locks: strict<br />
root: 1.13<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 13;    selected revisions: 13<br />
description:<br />
request.h , stdio.h, fcntl.h included.<br />
argc has 3 arguments<br />
argv has rfdp,wfdp.<br />
Client writes the message.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.13    locked by: root;<br />
date: 2015/12/20 21:52:27;  author: root;  state: Exp;  lines: +9 -12<br />
Printing Changes<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.12<br />
date: 2015/12/20 21:46:04;  author: root;  state: Exp;  lines: +2 -2<br />
obj1 and obj2 value changes<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.11<br />
date: 2015/12/20 21:43:02;  author: root;  state: Exp;  lines: +1 -1<br />
Printing change.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.10<br />
date: 2015/12/20 21:41:10;  author: root;  state: Exp;  lines: +13 -2<br />
Client reading result from server<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.9<br />
date: 2015/12/20 20:50:38;  author: root;  state: Exp;  lines: +1 -1<br />
Request printed.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.8<br />
date: 2015/12/20 20:48:04;  author: root;  state: Exp;  lines: +1 -1<br />
Request sent<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.7<br />
date: 2015/12/20 20:41:57;  author: root;  state: Exp;  lines: +1 -1<br />
argv changed to argv[]<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.6<br />
date: 2015/12/20 20:40:43;  author: root;  state: Exp;  lines: +5 -5<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.5<br />
date: 2015/12/20 20:38:04;  author: root;  state: Exp;  lines: +1 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.4<br />
date: 2015/12/20 20:33:54;  author: root;  state: Exp;  lines: +1 -2<br />
Debugging<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.3<br />
date: 2015/12/20 20:32:04;  author: root;  state: Exp;  lines: +2 -1<br />
argc is printed.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2<br />
date: 2015/12/20 20:27:40;  author: root;  state: Exp;  lines: +1 -0<br />
print statement at starting is added.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2015/12/20 19:55:46;  author: root;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: client2.c,v<br />
Working file: client2.c<br />
head: 1.1<br />
branch:<br />
locks: strict<br />
root: 1.1<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 1;    selected revisions: 1<br />
description:<br />
It requests for subtration from server.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1    locked by: root;<br />
date: 2015/12/20 22:11:46;  author: root;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: client3.c,v<br />
Working file: client3.c<br />
head: 1.1<br />
branch:<br />
locks: strict<br />
root: 1.1<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 1;    selected revisions: 1<br />
description:<br />
It is function for multiplication.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1    locked by: root;<br />
date: 2015/12/20 22:29:00;  author: root;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: multiplier.c,v<br />
Working file: multiplier.c<br />
head: 1.1<br />
branch:<br />
locks: strict<br />
root: 1.1<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 1;    selected revisions: 1<br />
description:<br />
Function for multiplier<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1    locked by: root;<br />
date: 2015/12/20 22:09:30;  author: root;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: server.c,v<br />
Working file: server.c<br />
head: 1.29<br />
branch:<br />
locks: strict<br />
root: 1.29<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 29;    selected revisions: 29<br />
description:<br />
Server includes header.h,request.h<br />
server creates a pipe(Half duplex)<br />
Server then creates a child.<br />
child is replaced by client.<br />
When pipe(arr) is called , arr[0] has read file descriptor and arr[1]<br />
has write file descriptor.<br />
rfdp and wfdp are passed to child.<br />
server reads the  data written by pipe.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.29    locked by: root;<br />
date: 2015/12/20 22:21:29;  author: root;  state: Exp;  lines: +1 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.28<br />
date: 2015/12/20 22:19:00;  author: root;  state: Exp;  lines: +1 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.27<br />
date: 2015/12/20 22:16:05;  author: root;  state: Exp;  lines: +1 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.26<br />
date: 2015/12/20 22:14:36;  author: root;  state: Exp;  lines: +1 -2<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.25<br />
date: 2015/12/20 22:07:12;  author: root;  state: Exp;  lines: +18 -2<br />
Subtractor and multiplier and adder are available operations.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.24<br />
date: 2015/12/20 21:56:07;  author: root;  state: Exp;  lines: +2 -2<br />
Printing changes.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.23<br />
date: 2015/12/20 21:54:17;  author: root;  state: Exp;  lines: +2 -2<br />
Printing changes.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.22<br />
date: 2015/12/20 21:44:51;  author: root;  state: Exp;  lines: +3 -3<br />
Printing change<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.21<br />
date: 2015/12/20 21:42:22;  author: root;  state: Exp;  lines: +2 -2<br />
count4 declared.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.20<br />
date: 2015/12/20 21:41:10;  author: root;  state: Exp;  lines: +12 -2<br />
Server writing result to client.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.19<br />
date: 2015/12/20 21:32:16;  author: root;  state: Exp;  lines: +2 -2<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.18<br />
date: 2015/12/20 21:30:26;  author: root;  state: Exp;  lines: +12 -5<br />
server read the result and print it.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.17<br />
date: 2015/12/20 21:16:59;  author: root;  state: Exp;  lines: +2 -2<br />
logical error<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.16<br />
date: 2015/12/20 21:12:16;  author: root;  state: Exp;  lines: +1 -0<br />
ce<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.15<br />
date: 2015/12/20 21:07:57;  author: root;  state: Exp;  lines: +1 -1<br />
fret2 is declared.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.14<br />
date: 2015/12/20 21:06:23;  author: root;  state: Exp;  lines: +35 -5<br />
adder is callled using another pipe and fork.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.13<br />
date: 2015/12/20 20:52:39;  author: root;  state: Exp;  lines: +1 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.12<br />
date: 2015/12/20 20:51:47;  author: root;  state: Exp;  lines: +1 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.11<br />
date: 2015/12/20 20:50:38;  author: root;  state: Exp;  lines: +1 -1<br />
Request printed.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.10<br />
date: 2015/12/20 20:48:04;  author: root;  state: Exp;  lines: +1 -1<br />
Request received.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.9<br />
date: 2015/12/20 20:44:58;  author: root;  state: Exp;  lines: +2 -2<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.8<br />
date: 2015/12/20 20:29:14;  author: root;  state: Exp;  lines: +2 -1<br />
ret=wait()<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.7<br />
date: 2015/12/20 20:27:40;  author: root;  state: Exp;  lines: +2 -1<br />
print statement at starting is added.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.6<br />
date: 2015/12/20 20:24:08;  author: root;  state: Exp;  lines: +1 -1<br />
client1 is replaced by client (name change in execl).<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.5<br />
date: 2015/12/20 20:22:45;  author: root;  state: Exp;  lines: +4 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.4<br />
date: 2015/12/20 20:20:38;  author: root;  state: Exp;  lines: +1 -1<br />
Pipe is created before fork.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.3<br />
date: 2015/12/20 20:19:46;  author: root;  state: Exp;  lines: +4 -2<br />
Some print statements added.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2<br />
date: 2015/12/20 20:16:56;  author: root;  state: Exp;  lines: +1 -0<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2015/12/20 19:55:46;  author: root;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: subtractor.c,v<br />
Working file: subtractor.c<br />
head: 1.1<br />
branch:<br />
locks: strict<br />
root: 1.1<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 1;    selected revisions: 1<br />
description:<br />
Function for subtraction.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1    locked by: root;<br />
date: 2015/12/20 22:09:30;  author: root;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/12/ipc-using-pipes-for-single-user/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Successfully Implemented the inter-communication between 3 client , server and 3 processing-side by using pipes.</title>
		<link>https://www.emblogic.com/blog/03/successfully-implemented-the-inter-communication-between-3-client-server-and-3-processing-side-by-using-pipes/</link>
		<comments>https://www.emblogic.com/blog/03/successfully-implemented-the-inter-communication-between-3-client-server-and-3-processing-side-by-using-pipes/#comments</comments>
		<pubDate>Sun, 22 Mar 2015 12:14:16 +0000</pubDate>
		<dc:creator><![CDATA[Shashank Arora]]></dc:creator>
				<category><![CDATA[Project 03: Client Server Communication using Linux and IPC]]></category>
		<category><![CDATA[3 client 3 processing]]></category>
		<category><![CDATA[intercommunication]]></category>
		<category><![CDATA[ipc pipes]]></category>
		<category><![CDATA[pipes implementation]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=12571</guid>
		<description><![CDATA[RCS file: header_server2.h,v Working file: header_server2.h head: 1.2 branch: locks: strict root: 1.2 access list: symbolic names: keyword substitution: kv total revisions: 2; selected revisions: 2 description: include 3 library &#60;stdio.h&#62; , &#60;stdlib.h&#62; and &#60;unistd.h&#62; create a function invoke_clients() to &#8230; <a href="https://www.emblogic.com/blog/03/successfully-implemented-the-inter-communication-between-3-client-server-and-3-processing-side-by-using-pipes/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<pre class="western">RCS file: header_server2.h,v</pre>
<pre class="western">Working file: header_server2.h</pre>
<pre class="western">head: 1.2</pre>
<pre class="western">branch:</pre>
<pre class="western">locks: strict</pre>
<pre class="western">	root: 1.2</pre>
<pre class="western">access list:</pre>
<pre class="western">symbolic names:</pre>
<pre class="western">keyword substitution: kv</pre>
<pre class="western">total revisions: 2;	selected revisions: 2</pre>
<pre class="western">description:</pre>
<pre class="western">include 3 library &lt;stdio.h&gt; , &lt;stdlib.h&gt;
and &lt;unistd.h&gt;</pre>
<pre class="western">create a function invoke_clients() to invoke the
3 clients simultaneously but actually it's a sequential process.</pre>
<pre class="western">given the prototype for read_clients() and pass
the two argument one is int which is arrof pipe astruct display * for
reading the request from clients to server.</pre>
<pre class="western">also include the defination of struct display in
header file. 3 datatype one for char opt and two int oper1 and
opern2.</pre>
<pre class="western">now introduce processing_results() and pass two
arguments. new arr1* for creating new pipe and struct display *.</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.2	locked by: root;</pre>
<pre class="western">date: 2015/03/18 11:36:49;  author: root; 
state: Exp;  lines: +1 -1</pre>
<pre class="western">*** empty log message ***</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.1</pre>
<pre class="western">date: 2015/03/16 10:26:29;  author: root; 
state: Exp;</pre>
<pre class="western">Initial revision</pre>
<pre class="western">RCS file: new_server.c,v</pre>
<pre class="western">Working file: new_server.c</pre>
<pre class="western">head: 1.2</pre>
<pre class="western">branch:</pre>
<pre class="western">locks: strict</pre>
<pre class="western">	root: 1.2</pre>
<pre class="western">access list:</pre>
<pre class="western">symbolic names:</pre>
<pre class="western">keyword substitution: kv</pre>
<pre class="western">total revisions: 2;	selected revisions: 2</pre>
<pre class="western">description:</pre>
<pre class="western">we create the *arr and provide the space for
read and write file descriptor means malloc * 6. 3 pipes we create
for 3 clients.</pre>
<pre class="western">call the invoke_clients() and pass the address
of arr as argument.</pre>
<pre class="western">declare **ptr and starting address store int ptr
and provide space with malloc.</pre>
<pre class="western">store the 3 strings in 2D array.</pre>
<pre class="western">create the pipes for 3 clients.</pre>
<pre class="western">NOw, fork() is used to create duplicate copy or
new process .</pre>
<pre class="western">in new process, we use execl() to replace new
process created by fork() with arguement we pass. And we also pass
two argument more read and write file discriptor but before passing
we converted it into string because execl() argument are in const
char *.</pre>
<pre class="western">sprintf is used to convert int into char.</pre>
<pre class="western">after this we read the request from client on
server.</pre>
<pre class="western">then write the request to processing_results
pipes.</pre>
<pre class="western">now, we created a processing_results() to
process the invoke_clients().</pre>
<pre class="western">In processing_results() fumction we pass the
arr1 of 6 to create the 3 pipes.</pre>
<pre class="western">declare the **p and provide space to store the
strings.</pre>
<pre class="western">create the 3 pipes through for loop.</pre>
<pre class="western">Now, fork() is used to create a new process. 
</pre>
<pre class="western">In child(new) process, we use execl() function
to replace the current process i.e new process. with arugment we used
in execl and also pass read and write file descriptor in char type
using sprintf.</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.2	locked by: root;</pre>
<pre class="western">date: 2015/03/18 11:36:54;  author: root; 
state: Exp;  lines: +18 -4</pre>
<pre class="western">*** empty log message ***</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.1</pre>
<pre class="western">date: 2015/03/16 11:05:43;  author: root; 
state: Exp;</pre>
<pre class="western">Initial revision


</pre>
<pre class="western">RCS file: client_sum.c,v</pre>
<pre class="western">Working file: client_sum.c</pre>
<pre class="western">head: 1.1</pre>
<pre class="western">branch:</pre>
<pre class="western">locks: strict</pre>
<pre class="western">	root: 1.1</pre>
<pre class="western">access list:</pre>
<pre class="western">symbolic names:</pre>
<pre class="western">keyword substitution: kv</pre>
<pre class="western">total revisions: 1;	selected revisions: 1</pre>
<pre class="western">description:</pre>
<pre class="western">read the file disp through main argument.</pre>
<pre class="western">convert it into integer by using atoi.</pre>
<pre class="western">and then write it into pipe.</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.1	locked by: root;</pre>
<pre class="western">date: 2015/03/16 13:39:29;  author: root; 
state: Exp;</pre>
<pre class="western">Initial revision</pre>
<pre class="western">=============================================================================</pre>
<pre class="western"></pre>
<pre class="western">RCS file: client_sub.c,v</pre>
<pre class="western">Working file: client_sub.c</pre>
<pre class="western">head: 1.1</pre>
<pre class="western">branch:</pre>
<pre class="western">locks: strict</pre>
<pre class="western">	root: 1.1</pre>
<pre class="western">access list:</pre>
<pre class="western">symbolic names:</pre>
<pre class="western">keyword substitution: kv</pre>
<pre class="western">total revisions: 1;	selected revisions: 1</pre>
<pre class="western">description:</pre>
<pre class="western">we read the argument through main.</pre>
<pre class="western">convert it into interger by using atoi before
using it into read and write function.</pre>
<pre class="western">use struct display a object and using this 'a'
object we store the opt, opern1 and opern2.</pre>
<pre class="western">and then write the result sub into pipe.</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.1	locked by: root;</pre>
<pre class="western">date: 2015/03/16 13:05:44;  author: root; 
state: Exp;</pre>
<pre class="western">Initial revision</pre>
<pre class="western">=============================================================================</pre>
<pre class="western"></pre>
<pre class="western">RCS file: client_mul.c,v</pre>
<pre class="western">Working file: client_mul.c</pre>
<pre class="western">head: 1.1</pre>
<pre class="western">branch:</pre>
<pre class="western">locks: strict</pre>
<pre class="western">	root: 1.1</pre>
<pre class="western">access list:</pre>
<pre class="western">symbolic names:</pre>
<pre class="western">keyword substitution: kv</pre>
<pre class="western">total revisions: 1;	selected revisions: 1</pre>
<pre class="western">description:</pre>
<pre class="western">same as above</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.1	locked by: root;</pre>
<pre class="western">date: 2015/03/16 13:33:06;  author: root; 
state: Exp;



</pre>
<pre class="western"></pre>
<pre class="western">RCS file: processing_sum.c,v</pre>
<pre class="western">Working file: processing_sum.c</pre>
<pre class="western">head: 1.2</pre>
<pre class="western">branch:</pre>
<pre class="western">locks: strict</pre>
<pre class="western">	root: 1.2</pre>
<pre class="western">access list:</pre>
<pre class="western">symbolic names:</pre>
<pre class="western">keyword substitution: kv</pre>
<pre class="western">total revisions: 2;	selected revisions: 2</pre>
<pre class="western">description:</pre>
<pre class="western">read the rd and wd file descriptor from server
through argv argument.</pre>
<pre class="western">convert argv[1] and argv[2] to rfd and wfd
integer.</pre>
<pre class="western">read the content and print the content in
processing_sum file.</pre>
<pre class="western">then write the result on the server pipe</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.2	locked by: root;</pre>
<pre class="western">date: 2015/03/18 11:36:58;  author: root; 
state: Exp;  lines: +1 -1</pre>
<pre class="western">*** empty log message ***</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.1</pre>
<pre class="western">date: 2015/03/06 08:21:16;  author: root; 
state: Exp;</pre>
<pre class="western">Initial revision</pre>
<pre class="western">=============================================================================</pre>
<pre class="western"></pre>
<pre class="western">RCS file: processing_sub.c,v</pre>
<pre class="western">Working file: processing_sub.c</pre>
<pre class="western">head: 1.2</pre>
<pre class="western">branch:</pre>
<pre class="western">locks: strict</pre>
<pre class="western">	root: 1.2</pre>
<pre class="western">access list:</pre>
<pre class="western">symbolic names:</pre>
<pre class="western">keyword substitution: kv</pre>
<pre class="western">total revisions: 2;	selected revisions: 2</pre>
<pre class="western">description:</pre>
<pre class="western">read write file discriptor is taken by main
argument</pre>
<pre class="western">convert it into integer rfd and wfd.</pre>
<pre class="western">by using atoi.</pre>
<pre class="western">read the struct display through address and
print the opt, opern1, opern2.</pre>
<pre class="western">and write the subtraction result into the
server-processing pipe.</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.2	locked by: root;</pre>
<pre class="western">date: 2015/03/18 11:36:59;  author: root; 
state: Exp;  lines: +1 -1</pre>
<pre class="western">*** empty log message ***</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.1</pre>
<pre class="western">date: 2015/03/17 15:02:50;  author: root; 
state: Exp;</pre>
<pre class="western">Initial revision</pre>
<pre class="western">=============================================================================</pre>
<pre class="western"></pre>
<pre class="western">RCS file: processing_mul.c,v</pre>
<pre class="western">Working file: processing_mul.c</pre>
<pre class="western">head: 1.2</pre>
<pre class="western">branch:</pre>
<pre class="western">locks: strict</pre>
<pre class="western">	root: 1.2</pre>
<pre class="western">access list:</pre>
<pre class="western">symbolic names:</pre>
<pre class="western">keyword substitution: kv</pre>
<pre class="western">total revisions: 2;	selected revisions: 2</pre>
<pre class="western">description:</pre>
<pre class="western">same as subtraction just changed the operator
and names and then write the result into pipe.</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.2	locked by: root;</pre>
<pre class="western">date: 2015/03/18 11:37:00;  author: root; 
state: Exp;  lines: +1 -1</pre>
<pre class="western">*** empty log message ***</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.1</pre>
<pre class="western">date: 2015/03/17 15:48:15;  author: root; 
state: Exp;</pre>
<pre class="western">Initial revision</pre>
<pre class="western">=============================================================================</pre>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/03/successfully-implemented-the-inter-communication-between-3-client-server-and-3-processing-side-by-using-pipes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Project 03: Client Server implementation using PIPES</title>
		<link>https://www.emblogic.com/blog/03/project-03-client-server-implementation-using-pipes/</link>
		<comments>https://www.emblogic.com/blog/03/project-03-client-server-implementation-using-pipes/#comments</comments>
		<pubDate>Thu, 05 Mar 2015 00:21:20 +0000</pubDate>
		<dc:creator><![CDATA[Parampreet Singh]]></dc:creator>
				<category><![CDATA[Project 03: Client Server Communication using Linux and IPC]]></category>
		<category><![CDATA[ipc]]></category>
		<category><![CDATA[ipc pipes]]></category>
		<category><![CDATA[pipes]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=12408</guid>
		<description><![CDATA[Here i have used 3 requesting clients and 3 processing clients. RCS file: header1.h,v Working file: header1.h head: branch: locks: strict access list: symbolic names: keyword substitution: kv total revisions: 0 description: this is the header file.it contains library which &#8230; <a href="https://www.emblogic.com/blog/03/project-03-client-server-implementation-using-pipes/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><em><strong>Here i have used 3 requesting clients and 3 processing clients.</strong></em><br />
RCS file: header1.h,v<br />
Working file: header1.h<br />
head:<br />
branch:<br />
locks: strict<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 0<br />
description:<br />
this is the header file.it contains library which are required by programs<br />
contains prototype for functions and structures<br />
=============================================================================<br />
RCS file: server.c,v<br />
Working file: server.c<br />
head: 1.1<br />
branch:<br />
locks: strict<br />
root: 1.1<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 1; selected revisions: 1<br />
description:<br />
this is the server program..here i have created six pipes.<br />
3 each for requesting clients and 3 for processing clients<br />
requesting client will send request to the server and server then transfer the info to the processing clients<br />
processing clients will process that info and send back to the server<br />
server will then transfer the info back to the requesting clients<br />
i have implemented the server program using functions<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1 locked by: root;<br />
date: 2015/03/05 00:08:19; author: root; state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: request_client.c,v<br />
Working file: request_client.c<br />
head: 1.1<br />
branch:<br />
locks: strict<br />
root: 1.1<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 1; selected revisions: 1<br />
description:<br />
this is the first requesting client.<br />
Sending request for the addtion.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1 locked by: root;<br />
date: 2015/03/05 00:08:11; author: root; state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: request_client_mul.c,v<br />
Working file: request_client_mul.c<br />
head: 1.1<br />
branch:<br />
locks: strict<br />
root: 1.1<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 1; selected revisions: 1<br />
description:<br />
this is second requesting client<br />
sending request for the multiplication.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1 locked by: root;<br />
date: 2015/03/05 00:08:19; author: root; state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: request_client_sub.c,v<br />
Working file: request_client_sub.c<br />
head: 1.1<br />
branch:<br />
locks: strict<br />
root: 1.1<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 1; selected revisions: 1<br />
description:<br />
this is the third requesting client<br />
sending request for the subtraction<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1 locked by: root;<br />
date: 2015/03/05 00:08:19; author: root; state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: adder.c,v<br />
Working file: adder.c<br />
head: 1.1<br />
branch:<br />
locks: strict<br />
root: 1.1<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 1; selected revisions: 1<br />
description:<br />
this is first processing client<br />
here arithmetic operation&#8221;ADDITION&#8221; is performed<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1 locked by: root;<br />
date: 2015/03/05 00:08:19; author: root; state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: mul.c,v<br />
Working file: mul.c<br />
head: 1.1<br />
branch:<br />
locks: strict<br />
root: 1.1<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 1; selected revisions: 1<br />
description:<br />
this is the second processing client<br />
here arithmetic operation &#8220;MULTIPLICATION&#8221; is performed.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1 locked by: root;<br />
date: 2015/03/05 00:08:19; author: root; state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: sub.c,v<br />
Working file: sub.c<br />
head: 1.1<br />
branch:<br />
locks: strict<br />
root: 1.1<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 1; selected revisions: 1<br />
description:<br />
this is the third processing client.<br />
Here arithmetic operation “SUBTRACTION” is performed.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1 locked by: root;<br />
date: 2015/03/05 00:08:19; author: root; state: Exp;<br />
Initial revision<br />
=============================================================================</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/03/project-03-client-server-implementation-using-pipes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inter Process Communication Using Pipes:</title>
		<link>https://www.emblogic.com/blog/02/inter-process-communication-using-pipes-2/</link>
		<comments>https://www.emblogic.com/blog/02/inter-process-communication-using-pipes-2/#comments</comments>
		<pubDate>Sat, 28 Feb 2015 10:10:48 +0000</pubDate>
		<dc:creator><![CDATA[Parampreet Singh]]></dc:creator>
				<category><![CDATA[Project 03: Client Server Communication using Linux and IPC]]></category>
		<category><![CDATA[ipc pipes]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=12372</guid>
		<description><![CDATA[RCS file: header.h,v Working file: header.h head: 1.1 branch: locks: strict root: 1.1 access list: symbolic names: keyword substitution: kv total revisions: 1; selected revisions: 1 description: this includes header files different libraries used in our program structure is also &#8230; <a href="https://www.emblogic.com/blog/02/inter-process-communication-using-pipes-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>RCS file: header.h,v<br />
Working file: header.h<br />
head: 1.1<br />
branch:<br />
locks: strict<br />
root: 1.1<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 1; selected revisions: 1<br />
description:<br />
this includes header files<br />
different libraries used in our program<br />
structure is also defined here,to be used in the main as well as execl initiated program.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1 locked by: root;<br />
date: 2015/02/27 17:08:22; author: root; state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: main.c,v<br />
Working file: main.c<br />
head: 1.2<br />
branch:<br />
locks: strict<br />
root: 1.2<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 2; selected revisions: 2<br />
description:<br />
pipes are used to create a inter process communication<br />
two file descriptors are created.one for read and other for write.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2 locked by: root;<br />
date: 2015/02/27 17:28:11; author: root; state: Exp; lines: +3 -3<br />
this is the main program we have initiated a execl program call<br />
we have taken data from the user end and write it into another process.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2015/02/27 17:08:22; author: root; state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: new.c,v<br />
Working file: new.c<br />
head: 1.1<br />
branch:<br />
locks: strict<br />
root: 1.1<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 1; selected revisions: 1<br />
description:<br />
here arithmetic operations are performed<br />
we have used switch statements<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1 locked by: root;<br />
date: 2015/02/27 17:12:18; author: root; state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: new.c,v<br />
Working file: new.c<br />
head:<br />
branch:<br />
locks: strict<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 0<br />
description:<br />
=============================================================================</p>
<p>RCS file: header.h,v<br />
Working file: header.h<br />
head: 1.1<br />
branch:<br />
locks: strict<br />
root: 1.1<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 1; selected revisions: 1<br />
description:<br />
this includes header files<br />
different libraries used in our program<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1 locked by: root;<br />
date: 2015/02/27 17:08:22; author: root; state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: main.c,v<br />
Working file: main.c<br />
head: 1.2<br />
branch:<br />
locks: strict<br />
root: 1.2<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 2; selected revisions: 2<br />
description:<br />
this is the main program we have initaiated a execl program call<br />
we have taken data from the user end and write it into another process.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2 locked by: root;<br />
date: 2015/02/27 17:28:11; author: root; state: Exp; lines: +3 -3<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2015/02/27 17:08:22; author: root; state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: new.c,v<br />
Working file: new.c<br />
head: 1.9<br />
branch:<br />
locks: strict<br />
root: 1.9<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 9; selected revisions: 9<br />
description:<br />
here result is calculated.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.3 locked by: root;<br />
date: 2015/02/27 18:16:21; author: root; state: Exp; lines: +1 -1<br />
result is transferred to the main program.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2<br />
date: 2015/02/27 18:14:02; author: root; state: Exp; lines: +1 -1<br />
error resolved<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2015/02/27 17:57:28; author: root; state: Exp;<br />
Initial revision<br />
=============================================================================</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/02/inter-process-communication-using-pipes-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
