<?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; Parampreet Singh</title>
	<atom:link href="https://www.emblogic.com/blog/author/param-singh91/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>Difference between Kmalloc() and Vmalloc()</title>
		<link>https://www.emblogic.com/blog/10/difference-between-kmalloc-and-vmalloc/</link>
		<comments>https://www.emblogic.com/blog/10/difference-between-kmalloc-and-vmalloc/#comments</comments>
		<pubDate>Sat, 24 Oct 2015 10:52:51 +0000</pubDate>
		<dc:creator><![CDATA[Parampreet Singh]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=12981</guid>
		<description><![CDATA[In order to allocate memory from kernel various types of API(application programming interfaces) are used.Two such API&#8217;s are Kmalloc() and Vmalloc(). SYNTAX: void * kmalloc(size_t size , int flags); void * vmalloc(unsigned long size); Kmalloc() is use to allocate memory &#8230; <a href="https://www.emblogic.com/blog/10/difference-between-kmalloc-and-vmalloc/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>In order to allocate memory from kernel various types of API(application programming interfaces) are used.Two such API&#8217;s are Kmalloc() and Vmalloc().</p>
<p>SYNTAX:</p>
<p>void * kmalloc(size_t size , int flags);</p>
<p>void * vmalloc(unsigned long size);</p>
<p>Kmalloc() is use to allocate memory requested from the kernel.The memory allocated is returned by the API and it is physically as well virtually contiguous.Generally we need this physically contiguous memory when we have to implement some driver which will be used to interface some hardware or device.In kmalloc we can define the size,how much memory is needed and also we can give flags as GFP_ATOMIC and GFP_KERNEL.GFP_ATOMIC means get free pages from kernel in atomic fashion means the allocation will never sleep in between and the priority is also highest.This is generally used in interrupt handlers,and in those situation where sleep is not permitted as in the case with spinlocks.Another flag is GFP_KERNEL means get free pages from kernel,here sleep is allowed and it is normal allocation.The major disadvantage of kmalloc is that in certain cases when not enough physical memory is present,the API will return error usually NULL is returned and wastage of memory is there.There are other flags also GFP_WAIT,GFP_MASK depending on various features and requirements.The defintion of kmalloc is usually found in &lt;slab.h&gt; header file.</p>
<p>Vmalloc() is used to allocate memory from the kernel.The memory allocated is virtually contiguous but not physically contiguous.This API works in the similar manner as the user level malloc() works.It means vmalloc ensures memory is allocated from vitual address space.In vmalloc there is no option to define flag.We can give the amount of size we required in the argument.The user will not be able to distinguish the difference in memory allocated by vmalloc and kmalloc since it will be virtually contiguous but in real manner at the backend that memory will be in chunks /blocks.Every page table of the block will be having details of the another page table linked to it.If not enough memory is available then NULL will be returned.we can find vmalloc in header file&lt;vmalloc.h&gt;.The major advantage of vmalloc is that if enough physical contiguous memory is not available then it will allocate memory virtually in chunks and will link that memory so it appears to be virtually contiguous.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/10/difference-between-kmalloc-and-vmalloc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POSIX THREADS: BRIEF INTRODUCTION</title>
		<link>https://www.emblogic.com/blog/05/posix-threads-brief-introduction/</link>
		<comments>https://www.emblogic.com/blog/05/posix-threads-brief-introduction/#comments</comments>
		<pubDate>Tue, 12 May 2015 12:14:04 +0000</pubDate>
		<dc:creator><![CDATA[Parampreet Singh]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=12664</guid>
		<description><![CDATA[Threads,Like processes are a mechanism to allow a program to do more than one thing at a time.As with processes,threads appear to run concurrently;the linux kernel schedules them asynchronously,interrupting each thread from time to time to give others a chance &#8230; <a href="https://www.emblogic.com/blog/05/posix-threads-brief-introduction/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><strong>Threads,Like processes are a mechanism to allow a program to do more than one thing at a time.As with processes,threads appear to run concurrently;the linux kernel schedules them asynchronously,interrupting each thread from time to time to give others a chance to execute.We can control the threads using various mechanism which we will discuss later.</strong></p>
<p><strong>Conceptually,a thread exists within a process.When we invoke a program,Linux creates a new process and in that process creates a single thread,which runs the program sequentially.That thread can create additional threads ; all these threads run the same program in the same process,but each thread may be executing a different part of the program at any given time.We can say sequence of execution is a thread.</strong></p>
<p><strong>When a program creates another thread,the creating and the created thread share the same memory space,file descriptors except a local stack is created for individual threads. If one thread changes the value of a variable ,for instance,the other thread subsequently will see the modified value.If one thread closes file descriptor the other threads may not be able to write or read to that file descriptor.If any thread inside a process calls one of the exec functions,all the other threads are ended(the new program may,of course create new threads).</strong></p>
<p><strong>The pthread_create() function creates a new thread.You can refer to man pages about pthread_create().We have to include &lt;pthread.h&gt; header file .A call to pthread_create() returns immediately and the original thread continues executing the instructions following the call.Meanwhile , the new thread begins executing the thread function.Linux schedules both threads asynchronously.</strong></p>
<p><strong>Under normal circumstances, a thread exits in one othe two ways.One way is by returning from the thread function.The return value from the thread function is taken to the return value of the thread.Alternatively,a thread can exit explicitly by calling pthread_exit().This function may be called form within the thread function.The argument to pthread_exit() is the thread&#8217;s return value.</strong></p>
<p><strong>We can retrieve the thread exit status using pthread_join().The pthread_join() function shall suspend execution of the calling thread until the target thread terminates, unless the target thread has already terminated. On return from a successful pthread_join(),  the value passed to pthread_exit() by the terminating thread shall be made available in the location referenced to pthread_join().When a pthread_join() returns successfully, the target thread has been terminated.</strong></p>
<p><strong>There are signals to control the threads.The pthread_kill() function requests that the signal to be delivered to the specified thread. The signal to be sent is specified by signal number and is either zero or one of the signals from the list of defined signals in the &lt;signal.h&gt; header file. If signal number is zero, error checking is performed, but no signal is sent to the target thread.</strong></p>
<p><strong>It returns 0 on success and a non zero value if pthread_kill() is unsuccessful.That non zero value is to check the error condition.One thing has to be made sure that the signal registration should be done in both the threads i.e the thread which is giving the signal and the target thread which will be killed.</strong></p>
<p><strong>P.S: Refer to man pages related to the arguments and the return values of the functions listed above.</strong></p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/05/posix-threads-brief-introduction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Initializing a driver using alloc_chrdev_region()</title>
		<link>https://www.emblogic.com/blog/04/initializing-a-driver-using-alloc_chrdev_region/</link>
		<comments>https://www.emblogic.com/blog/04/initializing-a-driver-using-alloc_chrdev_region/#comments</comments>
		<pubDate>Sat, 25 Apr 2015 10:18:50 +0000</pubDate>
		<dc:creator><![CDATA[Parampreet Singh]]></dc:creator>
				<category><![CDATA[Character Driver]]></category>
		<category><![CDATA[Device Drivers]]></category>
		<category><![CDATA[char driver]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=12625</guid>
		<description><![CDATA[RCS file: header.h,v Working file: header.h head: 1.10 branch: locks: strict access list: symbolic names: keyword substitution: kv total revisions: 10; selected revisions: 10 description: this is header file here various header files are included such as module param.h init.h &#8230; <a href="https://www.emblogic.com/blog/04/initializing-a-driver-using-alloc_chrdev_region/">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.10<br />
branch:<br />
locks: strict<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 10; selected revisions: 10<br />
description:<br />
this is header file</p>
<p>here various header files are included such as module param.h init.h cdev.h slab.h and many others<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
revision 1.10<br />
date: 2015/04/24 12:36:40; author: psingh; state: Exp; lines: +1</p>
<p>Here module author,module licence and module description is defined</p>
<p>&nbsp;</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>RCS file: declaration.h,v<br />
Working file: declaration.h<br />
head: 1.6<br />
branch:<br />
locks: strict<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 6; selected revisions: 6<br />
description:<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.6<br />
date: 2015/04/25 00:38:02; author: psingh; state: Exp; lines: +6 -6<br />
This is declaration.h&#8230;<br />
here declaration of struct qset is defined<br />
here declaration of struct Dev is also defined<br />
and a structure variable of type Dev is also defined which contains the element *qset and predefined structure cdev as mentioned in cdev.h&#8230;</p>
<p>============================================================================</p>
<p>RCS file: fopr.h,v<br />
Working file: fopr.h<br />
head: 1.1<br />
branch:<br />
locks: strict<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 1; selected revisions: 1<br />
description:<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2015/04/25 00:38:05; author: psingh; state: Exp;<br />
Initial revision<br />
Here file operation structure is taken and declared as extern&#8230;<br />
=============================================================================</p>
<p>RCS file: init.c,v<br />
Working file: init.c<br />
head: 1.2<br />
branch:<br />
locks: strict<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 2; selected revisions: 2</p>
<p>date: 2015/04/24 10:54:2; author: psingh; state: Exp; lines: +1 -1<br />
Here initalization of module is done using alloc_chrdev_region<br />
after that memory will be allocated by kernel using kmalloc()<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
revision 1.6<br />
date: 2015/04/24 10:53:1; author: psingh; state: Exp; lines: +4 -5<br />
cdev structure is initialized and its memory is made NULL by using memset<br />
after that cdev owner and file operation is declared and the addition of device table is done using cdev_add()</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
=============================================================================</p>
<p>RCS file: clean.c,v<br />
Working file: clean.c<br />
head: 1.2<br />
branch:p<br />
locks: strict<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 2; selected revisions: 2<br />
description:<br />
this is cleanup function</p>
<p>revision 1.2<br />
date: 2015/04/24 10:36:12; author: psingh; state: Exp; lines: +3 -1<br />
first cdev_del will remove the device table from the driver module<br />
after that kfree will free the memory allocated to the structure pointer as defined to the strcut Dev..<br />
then unregisteration of the module will be carried by using unregister_chrdev_region</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2015/04/24 10:12:13; author: psingh; state: Exp;<br />
Initial revision<br />
=============================================================================</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/04/initializing-a-driver-using-alloc_chrdev_region/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interprocess communication using message queues at the requesting side and shared memory at  the processing side with three clients successfully implemented.</title>
		<link>https://www.emblogic.com/blog/04/interprocess-communication-using-message-queues-at-the-requesting-side-and-shared-memory-at-the-processing-side-with-three-clients-successfully-implemented/</link>
		<comments>https://www.emblogic.com/blog/04/interprocess-communication-using-message-queues-at-the-requesting-side-and-shared-memory-at-the-processing-side-with-three-clients-successfully-implemented/#comments</comments>
		<pubDate>Tue, 07 Apr 2015 16:42:15 +0000</pubDate>
		<dc:creator><![CDATA[Parampreet Singh]]></dc:creator>
				<category><![CDATA[Project 03: Client Server Communication using Linux and IPC]]></category>
		<category><![CDATA[message queues]]></category>
		<category><![CDATA[shared memory]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=12548</guid>
		<description><![CDATA[RCS file: header.h,v Working file: header.h head: branch: locks: strict access list: symbolic names: keyword substitution: kv total revisions: 0 description: &#62;&#62; header file: contains header files which are required in the program mostly named stdio.h,sys/shm.h,sys/ipc.h,sys/types.h,sys/msg.h ============================================================================= RCS file: server.c,v &#8230; <a href="https://www.emblogic.com/blog/04/interprocess-communication-using-message-queues-at-the-requesting-side-and-shared-memory-at-the-processing-side-with-three-clients-successfully-implemented/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><strong>RCS file: header.h,v</strong><br />
<strong>Working file: header.h</strong><br />
<strong>head:</strong><br />
<strong>branch:</strong><br />
<strong>locks: strict</strong><br />
<strong>access list:</strong><br />
<strong>symbolic names:</strong><br />
<strong>keyword substitution: kv</strong><br />
<strong>total revisions: 0</strong><br />
<strong>description:</strong><br />
<strong>&gt;&gt; header file: contains header files which are required in the program mostly named stdio.h,sys/shm.h,sys/ipc.h,sys/types.h,sys/msg.h</strong><br />
<strong>=============================================================================</strong></p>
<p><strong>RCS file: server.c,v</strong><br />
<strong>Working file: server.c</strong><br />
<strong>head:</strong><br />
<strong>branch:</strong><br />
<strong>locks: strict</strong><br />
<strong>access list:</strong><br />
<strong>symbolic names:</strong><br />
<strong>keyword substitution: kv</strong><br />
<strong>total revisions: 0</strong><br />
<strong>description:</strong><br />
<strong>this is main server..</strong><br />
<strong>here request is recieved using message queues</strong><br />
<strong>request is written to the shared memory </strong><br />
<strong>result is fetched back from the shared memory</strong><br />
<strong>and then result is sent back to the requesting clients using message queues.</strong><br />
<strong>=============================================================================</strong></p>
<p><strong>RCS file: c1.c,v</strong><br />
<strong>Working file: c1.c</strong><br />
<strong>head:</strong><br />
<strong>branch:</strong><br />
<strong>locks: strict</strong><br />
<strong>access list:</strong><br />
<strong>symbolic names:</strong><br />
<strong>keyword substitution: kv</strong><br />
<strong>total revisions: 0</strong><br />
<strong>description:</strong><br />
<strong>this is requesting client contains request for the add operation</strong><br />
<strong>the request is sent to the server using message queues</strong><br />
<strong>and the result is recieved back from the server using message queues</strong><br />
<strong>=============================================================================</strong></p>
<p><strong>RCS file: c2.c,v</strong><br />
<strong>Working file: c2.c</strong><br />
<strong>head:</strong><br />
<strong>branch:</strong><br />
<strong>locks: strict</strong><br />
<strong>access list:</strong><br />
<strong>symbolic names:</strong><br />
<strong>keyword substitution: kv</strong><br />
<strong>total revisions: 0</strong><br />
<strong>description:</strong><br />
<strong>this is requesting client contains request for the multiply operation</strong><br />
<strong>the request is sent to the server using message queues</strong><br />
<strong>and the result is recieved back from the server using message queues</strong><br />
<strong>=============================================================================</strong></p>
<p><strong>RCS file: c3.c,v</strong><br />
<strong>Working file: c3.c</strong><br />
<strong>head:</strong><br />
<strong>branch:</strong><br />
<strong>locks: strict</strong><br />
<strong>access list:</strong><br />
<strong>symbolic names:</strong><br />
<strong>keyword substitution: kv</strong><br />
<strong>total revisions: 0</strong><br />
<strong>description:</strong><br />
<strong>this is requesting client contains request for the subtraction operation</strong><br />
<strong>the request sent to the server using message queues</strong><br />
<strong>and the result is recieved back from the server using message queues</strong><br />
<strong>=============================================================================</strong></p>
<p><strong>RCS file: p1.c,v</strong><br />
<strong>Working file: p1.c</strong><br />
<strong>head:</strong><br />
<strong>branch:</strong><br />
<strong>locks: strict</strong><br />
<strong>access list:</strong><br />
<strong>symbolic names:</strong><br />
<strong>keyword substitution: kv</strong><br />
<strong>total revisions: 0</strong><br />
<strong>description:</strong><br />
<strong>this is processing client..here adding operation is performed..</strong><br />
<strong>request is retrieved using shared memory</strong><br />
<strong>and result is written back to the shared memory</strong><br />
<strong>=============================================================================</strong></p>
<p><strong>RCS file: p2.c,v</strong><br />
<strong>Working file: p2.c</strong><br />
<strong>head:</strong><br />
<strong>branch:</strong><br />
<strong>locks: strict</strong><br />
<strong>access list:</strong><br />
<strong>symbolic names:</strong><br />
<strong>keyword substitution: kv</strong><br />
<strong>total revisions: 0</strong><br />
<strong>description:</strong><br />
<strong>second processing client..here subtraction operation is performed</strong><br />
<strong>request is retrieved using shared memory</strong><br />
<strong>and result is written back to the shared memory</strong><br />
<strong>,</strong><br />
<strong>=============================================================================</strong></p>
<p><strong>RCS file: p3.c,v</strong><br />
<strong>Working file: p3.c</strong><br />
<strong>head:</strong><br />
<strong>branch:</strong><br />
<strong>locks: strict</strong><br />
<strong>access list:</strong><br />
<strong>symbolic names:</strong><br />
<strong>keyword substitution: kv</strong><br />
<strong>total revisions: 0</strong><br />
<strong>description:</strong><br />
<strong>this is third processing client ..here multiplication operation is performed </strong><br />
<strong>request is retrieved using shared memory</strong><br />
<strong>and result is written back to the shared memory</strong><br />
<strong>=============================================================================</strong></p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/04/interprocess-communication-using-message-queues-at-the-requesting-side-and-shared-memory-at-the-processing-side-with-three-clients-successfully-implemented/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inter process communication using message queues with three requesting clients and three processing clients implemented  successfully</title>
		<link>https://www.emblogic.com/blog/04/inter-process-communication-using-message-queues-with-three-requesting-clients-and-three-processing-clients-implemented-successfully/</link>
		<comments>https://www.emblogic.com/blog/04/inter-process-communication-using-message-queues-with-three-requesting-clients-and-three-processing-clients-implemented-successfully/#comments</comments>
		<pubDate>Sun, 05 Apr 2015 01:45:46 +0000</pubDate>
		<dc:creator><![CDATA[Parampreet Singh]]></dc:creator>
				<category><![CDATA[Project 03: Client Server Communication using Linux and IPC]]></category>
		<category><![CDATA[message queue]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=12525</guid>
		<description><![CDATA[RCS file: header.h,v Working file: header.h head: 1.1 branch: locks: strict psingh: 1.1 access list: symbolic names: keyword substitution: kv total revisions: 1; selected revisions: 1 description: define header files thar are required for the implementation of message queues at &#8230; <a href="https://www.emblogic.com/blog/04/inter-process-communication-using-message-queues-with-three-requesting-clients-and-three-processing-clients-implemented-successfully/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><strong>RCS file: header.h,v</strong><br />
<strong>Working file: header.h</strong><br />
<strong>head: 1.1</strong><br />
<strong>branch:</strong><br />
<strong>locks: strict</strong><br />
<strong> psingh: 1.1</strong><br />
<strong>access list:</strong><br />
<strong>symbolic names:</strong><br />
<strong>keyword substitution: kv</strong><br />
<strong>total revisions: 1; selected revisions: 1</strong><br />
<strong>description:</strong><br />
<strong>define header files thar are required for the implementation of message queues at the requesting side and pipes at the processing side</strong><br />
<strong>gave prototype for the request strcture</strong><br />
<strong>gave prototype for the block of data that has to be sent to server via message queues</strong><br />
<strong>gave prototype for the result structure that has to be captured by requesting client from server side via meaasge queues</strong><br />
<strong>gave prototype for the functions used for invoking the processing clients.</strong><br />
<strong>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</strong><br />
<strong>revision 1.1 locked by: psingh;</strong><br />
<strong>date: 2015/04/05 01:44:07; author: psingh; state: Exp;</strong><br />
<strong>Initial revision</strong><br />
<strong>=============================================================================</strong></p>
<p><strong>RCS file: c1.c,v</strong><br />
<strong>Working file: c1.c</strong><br />
<strong>head: 1.1</strong><br />
<strong>branch:</strong><br />
<strong>locks: strict</strong><br />
<strong> psingh: 1.1</strong><br />
<strong>access list:</strong><br />
<strong>symbolic names:</strong><br />
<strong>keyword substitution: kv</strong><br />
<strong>total revisions: 1; selected revisions: 1</strong><br />
<strong>description:</strong><br />
<strong>here request for addition is present that has to be sent to server via message queues</strong><br />
<strong>and result is captured via another message queue</strong><br />
<strong>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</strong><br />
<strong>revision 1.1 locked by: psingh;</strong><br />
<strong>date: 2015/04/05 01:44:07; author: psingh; state: Exp;</strong><br />
<strong>Initial revision</strong><br />
<strong>=============================================================================</strong></p>
<p><strong>RCS file: c2.c,v</strong><br />
<strong>Working file: c2.c</strong><br />
<strong>head: 1.1</strong><br />
<strong>branch:</strong><br />
<strong>locks: strict</strong><br />
<strong> psingh: 1.1</strong><br />
<strong>access list:</strong><br />
<strong>symbolic names:</strong><br />
<strong>keyword substitution: kv</strong><br />
<strong>total revisions: 1; selected revisions: 1</strong><br />
<strong>description:</strong><br />
<strong>here request for subtraction is present that has to be sent to server via message queues</strong><br />
<strong>and result is captured via another message queues</strong><br />
<strong>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</strong><br />
<strong>revision 1.1 locked by: psingh;</strong><br />
<strong>date: 2015/04/05 01:44:07; author: psingh; state: Exp;</strong><br />
<strong>Initial revision</strong><br />
<strong>=============================================================================</strong></p>
<p><strong>RCS file: c3.c,v</strong><br />
<strong>Working file: c3.c</strong><br />
<strong>head: 1.1</strong><br />
<strong>branch:</strong><br />
<strong>locks: strict</strong><br />
<strong> psingh: 1.1</strong><br />
<strong>access list:</strong><br />
<strong>symbolic names:</strong><br />
<strong>keyword substitution: kv</strong><br />
<strong>total revisions: 1; selected revisions: 1</strong><br />
<strong>description:</strong><br />
<strong>here request for multiplication is present that has to be sent to server via message queues</strong><br />
<strong>and result is captured via another message queue</strong><br />
<strong>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</strong><br />
<strong>revision 1.1 locked by: psingh;</strong><br />
<strong>date: 2015/04/05 01:44:07; author: psingh; state: Exp;</strong><br />
<strong>Initial revision</strong><br />
<strong>=============================================================================</strong></p>
<p><strong>RCS file: p1.c,v</strong><br />
<strong>Working file: p1.c</strong><br />
<strong>head: 1.1</strong><br />
<strong>branch:</strong><br />
<strong>locks: strict</strong><br />
<strong> psingh: 1.1</strong><br />
<strong>access list:</strong><br />
<strong>symbolic names:</strong><br />
<strong>keyword substitution: kv</strong><br />
<strong>total revisions: 1; selected revisions: 1</strong><br />
<strong>description:</strong><br />
<strong>here addition operation is performed on the request sent by the server via pipe and then the result is transferred back to the server via pipe using signals.</strong><br />
<strong>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</strong><br />
<strong>revision 1.1 locked by: psingh;</strong><br />
<strong>date: 2015/04/05 01:44:07; author: psingh; state: Exp;</strong><br />
<strong>Initial revision</strong><br />
<strong>=============================================================================</strong></p>
<p><strong>RCS file: p2.c,v</strong><br />
<strong>Working file: p2.c</strong><br />
<strong>head: 1.1</strong><br />
<strong>branch:</strong><br />
<strong>locks: strict</strong><br />
<strong> psingh: 1.1</strong><br />
<strong>access list:</strong><br />
<strong>symbolic names:</strong><br />
<strong>keyword substitution: kv</strong><br />
<strong>total revisions: 1; selected revisions: 1</strong><br />
<strong>description:</strong><br />
<strong>here subtraction operation is performed on the request sent by the server via pipe and then the result is transferred back to the server via pipe using signals</strong><br />
<strong>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</strong><br />
<strong>revision 1.1 locked by: psingh;</strong><br />
<strong>date: 2015/04/05 01:44:07; author: psingh; state: Exp;</strong><br />
<strong>Initial revision</strong><br />
<strong>=============================================================================</strong></p>
<p><strong>RCS file: p3.c,v</strong><br />
<strong>Working file: p3.c</strong><br />
<strong>head: 1.1</strong><br />
<strong>branch:</strong><br />
<strong>locks: strict</strong><br />
<strong> psingh: 1.1</strong><br />
<strong>access list:</strong><br />
<strong>symbolic names:</strong><br />
<strong>keyword substitution: kv</strong><br />
<strong>total revisions: 1; selected revisions: 1</strong><br />
<strong>description:</strong><br />
<strong>here multiplication operation is performed on the request sent bye the server via pipe and then the result is transferred back to the to the server via pipe using signals</strong><br />
<strong>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</strong><br />
<strong>revision 1.1 locked by: psingh;</strong><br />
<strong>date: 2015/04/05 01:44:07; author: psingh; state: Exp;</strong><br />
<strong>Initial revision</strong><br />
<strong>=============================================================================</strong></p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/04/inter-process-communication-using-message-queues-with-three-requesting-clients-and-three-processing-clients-implemented-successfully/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inter process communication using fifo at the requesting side and pipes at the processing side using semaphores and signals.</title>
		<link>https://www.emblogic.com/blog/04/inter-process-communication-using-fifo-at-the-requesting-side-and-pipes-at-the-processing-side-using-semaphores-and-signals/</link>
		<comments>https://www.emblogic.com/blog/04/inter-process-communication-using-fifo-at-the-requesting-side-and-pipes-at-the-processing-side-using-semaphores-and-signals/#comments</comments>
		<pubDate>Sat, 04 Apr 2015 04:52:45 +0000</pubDate>
		<dc:creator><![CDATA[Parampreet Singh]]></dc:creator>
				<category><![CDATA[Project 03: Client Server Communication using Linux and IPC]]></category>
		<category><![CDATA[FIFO]]></category>
		<category><![CDATA[semaphores]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=12520</guid>
		<description><![CDATA[RCS file: header.h,v Working file: header.h head: 1.1 branch: locks: strict psingh: 1.1 access list: symbolic names: keyword substitution: kv total revisions: 1;    selected revisions: 1 description: gave header files which are required for the fifo and semaphore implementation. gave &#8230; <a href="https://www.emblogic.com/blog/04/inter-process-communication-using-fifo-at-the-requesting-side-and-pipes-at-the-processing-side-using-semaphores-and-signals/">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 />
psingh: 1.1<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 1;    selected revisions: 1<br />
description:<br />
gave header files which are required for the fifo and semaphore implementation.<br />
gave prototypes for the request structure<br />
gave prototype for the semaphore union<br />
gave prototypes for the invoke_process functions<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1    locked by: psingh;<br />
date: 2015/04/03 18:51:58;  author: psingh;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: c1.c,v<br />
Working file: c1.c<br />
head: 1.1<br />
branch:<br />
locks: strict<br />
psingh: 1.1<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 1;    selected revisions: 1<br />
description:<br />
thi is first requesting client<br />
here request for addition is sent to the server side<br />
including semaphores and signals<br />
request has been sent through the fifo to the server<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1    locked by: psingh;<br />
date: 2015/04/03 18:51:58;  author: psingh;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: c2.c,v<br />
Working file: c2.c<br />
head: 1.1<br />
branch:<br />
locks: strict<br />
psingh: 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 />
here request for subtraction sent to server side<br />
using semaphores and signals<br />
request sent through fifo<br />
result read through another fifo<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1    locked by: psingh;<br />
date: 2015/04/03 18:51:58;  author: psingh;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: c3.c,v<br />
Working file: c3.c<br />
head: 1.1<br />
branch:<br />
locks: strict<br />
psingh: 1.1<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 1;    selected revisions: 1<br />
description:<br />
this is third requesting client<br />
here request for multiplication sent thorugh fifo to the server side<br />
using semaphores and signals<br />
result read through another fifo from the server&#8217;s end<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1    locked by: psingh;<br />
date: 2015/04/03 18:51:58;  author: psingh;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: p1.c,v<br />
Working file: p1.c<br />
head: 1.1<br />
branch:<br />
locks: strict<br />
psingh: 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 processing client<br />
here addition operation is performed on the request sent by the requesting client<br />
result is send through the pipe to the servers end using signals<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1    locked by: psingh;<br />
date: 2015/04/03 18:51:58;  author: psingh;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: p2.c,v<br />
Working file: p2.c<br />
head: 1.1<br />
branch:<br />
locks: strict<br />
psingh: 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 subtraction operation is performed on the request sent by the requesting client<br />
result is sent back to the server&#8217;s end using pipes and signals<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1    locked by: psingh;<br />
date: 2015/04/03 18:51:58;  author: psingh;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: p3.c,v<br />
Working file: p3.c<br />
head: 1.1<br />
branch:<br />
locks: strict<br />
psingh: 1.1<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 1;    selected revisions: 1<br />
description:<br />
this is third processing client<br />
here operation of multiplication is performed on the request sent by the requsting client<br />
result is sent back to the server using pipes and signals<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1    locked by: psingh;<br />
date: 2015/04/03 18:51:58;  author: psingh;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/04/inter-process-communication-using-fifo-at-the-requesting-side-and-pipes-at-the-processing-side-using-semaphores-and-signals/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>
		<item>
		<title>Inter Process Communication using files:</title>
		<link>https://www.emblogic.com/blog/02/inter-process-communication-using-files-5/</link>
		<comments>https://www.emblogic.com/blog/02/inter-process-communication-using-files-5/#comments</comments>
		<pubDate>Sat, 28 Feb 2015 04:45:30 +0000</pubDate>
		<dc:creator><![CDATA[Parampreet Singh]]></dc:creator>
				<category><![CDATA[Project 03: Client Server Communication using Linux and IPC]]></category>
		<category><![CDATA[ipc files]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=12356</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 is header file this file includes the standard libraries required in the &#8230; <a href="https://www.emblogic.com/blog/02/inter-process-communication-using-files-5/">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 is header file<br />
this file includes the standard libraries required in the program.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1 locked by: root;<br />
date: 2015/02/27 04:43:41; author: root; state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: replace1.c,v<br />
Working file: replace1.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 />
this is main file<br />
in this program we have initiated a call using execl function<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.4 locked by: root;<br />
date: 2015/02/27 15:27:16; author: root; state: Exp; lines: +1 -1<br />
first converting the integer to the character type<br />
since execl takes char* as a argument.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.3<br />
date: 2015/02/27 15:25:30; author: root; state: Exp; lines: +2 -3<br />
sending data to the new program initiated by execl<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2<br />
date: 2015/02/27 05:27:27; author: root; state: Exp; lines: +5 -5<br />
reading back the values send by execl initiated program<br />
output is displayed.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2015/02/27 04:43:41; author: root; state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: new1.c,v<br />
Working file: new1.c<br />
head: 1.3<br />
branch:<br />
locks: strict<br />
root: 1.3<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 3; selected revisions: 3<br />
description:<br />
this is called by execl<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.3 locked by: root;<br />
date: 2015/02/27 05:27:31; author: root; state: Exp; lines: +1 -1<br />
here we have used command line arguments to collect the char* values<br />
then these values converted to integer type using atoi()<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2<br />
date: 2015/02/27 04:58:29; author: root; state: Exp; lines: +1 -1<br />
reading the values transmitted by the main program<br />
and writting the results back to the main program.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2015/02/27 04:43:41; author: root; state: Exp;<br />
Initial revision<br />
=============================================================================</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/02/inter-process-communication-using-files-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
