<?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; pipes implementation</title>
	<atom:link href="https://www.emblogic.com/blog/tag/pipes-implementation/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>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>
	</channel>
</rss>
