<?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; signals</title>
	<atom:link href="https://www.emblogic.com/blog/tag/signals/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>How to register a signal</title>
		<link>https://www.emblogic.com/blog/01/how-to-register-a-signal/</link>
		<comments>https://www.emblogic.com/blog/01/how-to-register-a-signal/#comments</comments>
		<pubDate>Fri, 15 Jan 2016 11:59:04 +0000</pubDate>
		<dc:creator><![CDATA[Ankur Garg]]></dc:creator>
				<category><![CDATA[Linux Internals and System Programming]]></category>
		<category><![CDATA[Project 03: Client Server Communication using Linux and IPC]]></category>
		<category><![CDATA[c programming]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[ipc]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[linux system programming]]></category>
		<category><![CDATA[register a signal]]></category>
		<category><![CDATA[signals]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=13173</guid>
		<description><![CDATA[Register a signal ================== - Program can handle a signal using signal library function signal(). - signal() is used to register the signal handler function with kernel on behalf of current process. - It is included in header :- #include&#60;header.h&#62; &#8230; <a href="https://www.emblogic.com/blog/01/how-to-register-a-signal/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Register a signal<br />
==================<br />
- Program can handle a signal using signal library function signal().<br />
- signal() is used to register the signal handler function with kernel on behalf of current process.<br />
- It is included in header :-<br />
#include&lt;header.h&gt;<br />
- Prototype of function is :-<br />
void* (signal(int signo,void(*func)(int)))(int);<br />
- signal() function takes 2 parameters, signo and func.<br />
- The signal to be caught or ignored is given as argument signo.<br />
- The function to be called when the specified signal is received is given as func.<br />
- The function must take a single int argument (the signal received) and has return type void.</p>
<p>- The signal() command can be used in 3 modes :-<br />
(i) Default mode (Terminate the process)<br />
SIG_DFL &#8211;&gt; is used in place of func.<br />
(ii) Ignore the signal<br />
SIG_IGN &#8211;&gt; is used in place of func.<br />
(iii) User defined mode<br />
User defined function is used in place of func.</p>
<p>- The signal command returns the function which is setup to handle the signal, SIG_DFL or SIG_IGN in 3rd, 1st and 2nd cases respectively.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/01/how-to-register-a-signal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>About Signals</title>
		<link>https://www.emblogic.com/blog/01/about-signals/</link>
		<comments>https://www.emblogic.com/blog/01/about-signals/#comments</comments>
		<pubDate>Fri, 15 Jan 2016 11:57:12 +0000</pubDate>
		<dc:creator><![CDATA[Ankur Garg]]></dc:creator>
				<category><![CDATA[Linux Internals and System Programming]]></category>
		<category><![CDATA[Project 03: Client Server Communication using Linux and IPC]]></category>
		<category><![CDATA[c programming]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[ipc]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[signals]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=13171</guid>
		<description><![CDATA[Signals ======== - A signal is an event generated by UNIX/LINUX system in response to some condition. - On receipt of a signal, process may in turn take some action. - Signals are generated by some error conditions such as:- &#8230; <a href="https://www.emblogic.com/blog/01/about-signals/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Signals<br />
========<br />
- A signal is an event generated by UNIX/LINUX system in response to some condition.<br />
- On receipt of a signal, process may in turn take some action.<br />
- Signals are generated by some error conditions such as:-<br />
* Memory Segment Violation<br />
* Floating Point Processor error<br />
* Illegal Instruction etc.<br />
- They are generated by shell and terminal handlers.<br />
- They cause interrupts.</p>
<p>- They can also be used to sent from one process to another as a way of passing information or modifying behaviour.</p>
<p>- As default, if a process receives any signal, process will be terminated immediately.<br />
- Usually a core dump file is created.</p>
<p>- The signals are defined by including header file signal.h<br />
- They all begn with &#8220;SIG&#8221;.<br />
- There are 64 signals in LINUX.<br />
- The can be listed using command :-<br />
kill -l<br />
- Some of the signals are :-</p>
<p>Signal Name       Description<br />
SIGABORT          Process Abort<br />
SIGALRM           Alarm Clock<br />
SIGFPE            Floating Point Exception<br />
SIGHUP            Hangup<br />
SIGILL            Illegal Instruction<br />
SIGINT            Terminal Interrupt<br />
SIGKILL           Kill (can&#8217;t be caught or ignored)<br />
SIGPIPE           Write on a pipe with no reader<br />
SIGQUIT           Terminal Quit<br />
SIGSEGV           Invalid memory segment access (Segmentation Fault)<br />
SIGTERM           Termination<br />
SIGUSR1           User-defined signal 1<br />
SIGUSR2           User-defined signal 2</p>
<p>SIGCHLD           Child process has stopped or exited<br />
SIGCONT           Continue exexuting, if stopped<br />
SIGSTOP           Stop Executing (Can&#8217;t be caught or ignored)<br />
SIGTSTP           Terminal stop signal<br />
SIGTTIN           Background process trying to read<br />
SIGTTOU           Background process trying to write</p>
<p>- SIGINT can be called using Ctrl-C<br />
- A signal has 3 steps:-<br />
1) raise<br />
2) catch<br />
3) ignore/handle</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/01/about-signals/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CIient Server using IPC for FIFO,Pipes and Signals for n clients</title>
		<link>https://www.emblogic.com/blog/01/ciient-server-using-ipc-for-fifopipes-and-signals-for-n-clients/</link>
		<comments>https://www.emblogic.com/blog/01/ciient-server-using-ipc-for-fifopipes-and-signals-for-n-clients/#comments</comments>
		<pubDate>Thu, 07 Jan 2016 09:16:21 +0000</pubDate>
		<dc:creator><![CDATA[Ankur Garg]]></dc:creator>
				<category><![CDATA[Project 03: Client Server Communication using Linux and IPC]]></category>
		<category><![CDATA[client-server]]></category>
		<category><![CDATA[embedded c]]></category>
		<category><![CDATA[Embedded Linux]]></category>
		<category><![CDATA[FIFO]]></category>
		<category><![CDATA[ipc]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[signals]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=13122</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: It includes basic headerfiles for FIFOs. It contains stdio.h, fcntl.h, unistd.h, sys/types.h, sys/stat.h &#8230; <a href="https://www.emblogic.com/blog/01/ciient-server-using-ipc-for-fifopipes-and-signals-for-n-clients/">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 />
It includes basic headerfiles for FIFOs.<br />
It contains stdio.h, fcntl.h, unistd.h, sys/types.h, sys/stat.h<br />
It contains #ifndef HEADERS to avoid multiple declaration of heders by differnt files.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2    locked by: root;<br />
date: 2016/01/01 02:10:15;  author: root;  state: Exp;  lines: +1 -0<br />
signal.h is included for using kill operation.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2015/12/21 04:54:01;  author: root;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: request.h,v<br />
Working file: request.h<br />
head: 1.19<br />
branch:<br />
locks: strict<br />
root: 1.19<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 19;    selected revisions: 19<br />
description:<br />
It contains struct request<br />
It is format of basic client request.<br />
It contains client PID, 2 objects,operation to be performed.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.19    locked by: root;<br />
date: 2016/01/06 10:22:24;  author: root;  state: Exp;  lines: +1 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.18<br />
date: 2016/01/04 11:02:29;  author: root;  state: Exp;  lines: +1 -1<br />
maximum clients are changed from 1000 to 10000.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.17<br />
date: 2016/01/04 10:39:25;  author: root;  state: Exp;  lines: +1 -1<br />
No. of MAX_CLIENT increased to 1000.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.16<br />
date: 2016/01/01 02:30:39;  author: root;  state: Exp;  lines: +1 -1<br />
No. of clients = 100<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.15<br />
date: 2016/01/01 02:13:15;  author: root;  state: Exp;  lines: +2 -0<br />
signal.h is included.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.14<br />
date: 2015/12/21 09:54:15;  author: root;  state: Exp;  lines: +1 -1<br />
CIIENT_MAX = 5<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.13<br />
date: 2015/12/21 09:45:17;  author: root;  state: Exp;  lines: +1 -1<br />
No. of clients increased to 1114.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.12<br />
date: 2015/12/21 09:27:52;  author: root;  state: Exp;  lines: +1 -1<br />
No. of clients is 114.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.11<br />
date: 2015/12/21 09:13:31;  author: root;  state: Exp;  lines: +1 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.10<br />
date: 2015/12/21 09:07:47;  author: root;  state: Exp;  lines: +1 -1<br />
No. of clients is increased from 4 to 5.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.9<br />
date: 2015/12/21 08:50:23;  author: root;  state: Exp;  lines: +1 -1<br />
No. of MAX_CLIENT becomes 4<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.8<br />
date: 2015/12/21 07:09:44;  author: root;  state: Exp;  lines: +1 -0<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.7<br />
date: 2015/12/21 05:56:59;  author: root;  state: Exp;  lines: +1 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.6<br />
date: 2015/12/21 05:52:10;  author: root;  state: Exp;  lines: +1 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.5<br />
date: 2015/12/21 05:50:03;  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/21 05:46:10;  author: root;  state: Exp;  lines: +1 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.3<br />
date: 2015/12/21 05:32:51;  author: root;  state: Exp;  lines: +1 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2<br />
date: 2015/12/21 05:27:31;  author: root;  state: Exp;  lines: +1 -1<br />
Macro of REQUESTFIFO is redefined which contains a %d which will be its PID.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2015/12/21 04:56:38;  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 />
adder has command line arguments which contains File Descriptors of pipe.<br />
adder read request from server for adding 2 objects<br />
adder write result(int) into server.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.4    locked by: root;<br />
date: 2016/01/06 08:52:29;  author: root;  state: Exp;  lines: +1 -1<br />
signal is removed.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.3<br />
date: 2016/01/01 02:07:16;  author: root;  state: Exp;  lines: +2 -1<br />
alarm signal is send to server after it writes result to server<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2<br />
date: 2015/12/21 09:59:14;  author: root;  state: Exp;  lines: +1 -1<br />
print statement decreased.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2015/12/21 04:40:12;  author: root;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: client1.c,v<br />
Working file: client1.c<br />
head: 1.15<br />
branch:<br />
locks: strict<br />
root: 1.15<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 15;    selected revisions: 15<br />
description:<br />
It open the requestfifo<br />
Write request for addition using struct request to server<br />
Then, it reads result(int) from server.<br />
Before reading result &#8220;resultfifo&#8221; is being created by client.<br />
Different clients uses same requestfifo but they have unique resultfifo which is created by client itself.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.15    locked by: root;<br />
date: 2015/12/21 10:05:47;  author: root;  state: Exp;  lines: +5 -5<br />
print staements removed<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.14<br />
date: 2015/12/21 06:16:33;  author: root;  state: Exp;  lines: +1 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.13<br />
date: 2015/12/21 06:11:20;  author: root;  state: Exp;  lines: +7 -7<br />
name of arr changes to client_fifo<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.12<br />
date: 2015/12/21 05:59:17;  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/21 05:56:32;  author: root;  state: Exp;  lines: +3 -3<br />
arr data type changes from char * to string.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.10<br />
date: 2015/12/21 05:52:06;  author: root;  state: Exp;  lines: +2 -2<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.9<br />
date: 2015/12/21 05:50:02;  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/21 05:46:08;  author: root;  state: Exp;  lines: +2 -2<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.7<br />
date: 2015/12/21 05:41:58;  author: root;  state: Exp;  lines: +1 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.6<br />
date: 2015/12/21 05:39:43;  author: root;  state: Exp;  lines: +2 -2<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.5<br />
date: 2015/12/21 05:35:20;  author: root;  state: Exp;  lines: +2 -2<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.4<br />
date: 2015/12/21 05:34:03;  author: root;  state: Exp;  lines: +1 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.3<br />
date: 2015/12/21 05:32:47;  author: root;  state: Exp;  lines: +1 -0<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2<br />
date: 2015/12/21 05:27:08;  author: root;  state: Exp;  lines: +3 -1<br />
sprintf() is used for creating client address.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2015/12/21 04:42:31;  author: root;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: client2.c,v<br />
Working file: client2.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 />
client2 request for subtraction from the server.<br />
It writes its request from requestfifo.<br />
And it creates the resultfifo.<br />
And it reads result from server through resultfifo.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.3    locked by: root;<br />
date: 2015/12/21 10:06:09;  author: root;  state: Exp;  lines: +4 -4<br />
print staements removed<br />
&gt;<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2<br />
date: 2015/12/21 06:36:30;  author: root;  state: Exp;  lines: +7 -4<br />
client_fifo is introduced.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2015/12/21 05:09:19;  author: root;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: client3.c,v<br />
Working file: client3.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 client request for multiplication.<br />
It writes request to server through requestfifo.<br />
It creates resultfifo.<br />
It reads result from server through resultfifo.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.4    locked by: root;<br />
date: 2015/12/21 10:06:20;  author: root;  state: Exp;  lines: +5 -5<br />
print staements removed<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.3<br />
date: 2015/12/21 06:37:03;  author: root;  state: Exp;  lines: +7 -4<br />
client_fifo is introduced.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2<br />
date: 2015/12/21 05:16:34;  author: root;  state: Exp;  lines: +1 -1<br />
Values of objects changed.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2015/12/21 05:14:09;  author: root;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: client4.c,v<br />
Working file: client4.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 client request for modulo (%)<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.3    locked by: root;<br />
date: 2015/12/21 10:06:24;  author: root;  state: Exp;  lines: +3 -3<br />
print staements removed<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2<br />
date: 2015/12/21 09:36:57;  author: root;  state: Exp;  lines: +2 -2<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2015/12/21 08:49:24;  author: root;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: client5.c,v<br />
Working file: client5.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 />
Client5 request for divide operation.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2    locked by: root;<br />
date: 2015/12/21 10:06:27;  author: root;  state: Exp;  lines: +5 -5<br />
print staements removed<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2015/12/21 09:05:44;  author: root;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: divide.c,v<br />
Working file: divide.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 />
It is used for accepting request for divide i.e when operation=&#8217;/&#8217;<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.4    locked by: root;<br />
date: 2016/01/06 08:52:44;  author: root;  state: Exp;  lines: +1 -1<br />
signal is removed.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.3<br />
date: 2016/01/01 02:08:20;  author: root;  state: Exp;  lines: +3 -2<br />
alarm signal is send to server after it writes result to server<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2<br />
date: 2015/12/21 09:59:36;  author: root;  state: Exp;  lines: +1 -1<br />
print statement decreased.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2015/12/21 09:06:02;  author: root;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: modulo.c,v<br />
Working file: modulo.c<br />
head: 1.5<br />
branch:<br />
locks: strict<br />
root: 1.5<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 5;    selected revisions: 5<br />
description:<br />
This gives result of modulo<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.5    locked by: root;<br />
date: 2016/01/06 08:52:52;  author: root;  state: Exp;  lines: +1 -1<br />
signal is removed.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.4<br />
date: 2016/01/01 02:08:33;  author: root;  state: Exp;  lines: +3 -2<br />
alarm signal is send to server after it writes result to server<br />
..<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.3<br />
date: 2015/12/21 09:59:41;  author: root;  state: Exp;  lines: +1 -1<br />
print statement decreased.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2<br />
date: 2015/12/21 08:53:15;  author: root;  state: Exp;  lines: +1 -1<br />
print statement changes.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2015/12/21 08:49:48;  author: root;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: multiplier.c,v<br />
Working file: multiplier.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 />
It read request from server from pipe for multiplication purpose.<br />
It prosses the request and get the result.<br />
result is written to server through pipe.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.4    locked by: root;<br />
date: 2016/01/06 08:52:59;  author: root;  state: Exp;  lines: +1 -1<br />
signal is received.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.3<br />
date: 2016/01/01 02:08:39;  author: root;  state: Exp;  lines: +2 -1<br />
alarm signal is send to server after it writes result to server<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2<br />
date: 2015/12/21 09:59:45;  author: root;  state: Exp;  lines: +1 -1<br />
print statement decreased.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2015/12/21 04:46:24;  author: root;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: server.c,v<br />
Working file: server.c<br />
head: 1.46<br />
branch:<br />
locks: strict<br />
root: 1.46<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 46;    selected revisions: 46<br />
description:<br />
Ii can handle only 1 client in this revision.<br />
requestfifo is created.<br />
It reads the request from client.<br />
A pipe is created by server.<br />
This pipe is used to send request to adder.<br />
Then, it read result(int) from adder.<br />
through pipe.<br />
It writes result to the client using resultfifo (of respectice client).<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.46    locked by: root;<br />
date: 2016/01/06 10:22:21;  author: root;  state: Exp;  lines: +0 -10<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.45<br />
date: 2016/01/06 09:13:03;  author: root;  state: Exp;  lines: +1 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.44<br />
date: 2016/01/06 08:53:09;  author: root;  state: Exp;  lines: +3 -3<br />
signal is removed.<br />
wait() is used instead of pause().<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.43<br />
date: 2016/01/04 11:04:33;  author: root;  state: Exp;  lines: +1 -0<br />
rfd and wfd are printed.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.42<br />
date: 2016/01/04 11:00:31;  author: root;  state: Exp;  lines: +2 -0<br />
The pipe fd&#8217;s are closed.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.41<br />
date: 2016/01/04 10:41:42;  author: root;  state: Exp;  lines: +1 -0<br />
Print statement added to show which no. of cient is accessing th server.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.40<br />
date: 2016/01/04 03:32:19;  author: root;  state: Exp;  lines: +1 -1<br />
No, of clients determination corrected.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.39<br />
date: 2016/01/04 03:11:11;  author: root;  state: Exp;  lines: +1 -0<br />
No.of clients Printed.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.38<br />
date: 2016/01/04 03:05:30;  author: root;  state: Exp;  lines: +4 -4<br />
2nd argument of read or write corrected.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.37<br />
date: 2016/01/04 03:03:31;  author: root;  state: Exp;  lines: +28 -28<br />
array of variables changed to simple variables<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.36<br />
date: 2016/01/04 02:54:37;  author: root;  state: Exp;  lines: +2 -3<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.35<br />
date: 2016/01/04 02:52:44;  author: root;  state: Exp;  lines: +2 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.34<br />
date: 2016/01/04 02:46:38;  author: root;  state: Exp;  lines: +2 -6<br />
close() command is removed.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.33<br />
date: 2016/01/04 02:43:10;  author: root;  state: Exp;  lines: +2 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.32<br />
date: 2016/01/04 02:37:50;  author: root;  state: Exp;  lines: +2 -3<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.31<br />
date: 2016/01/04 02:36:11;  author: root;  state: Exp;  lines: +6 -7<br />
while is used instead of for loop.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.30<br />
date: 2016/01/01 02:12:09;  author: root;  state: Exp;  lines: +1 -1<br />
ce<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.29<br />
date: 2016/01/01 02:08:42;  author: root;  state: Exp;  lines: +12 -1<br />
pause is used instead of wait() before reading result from pipe through calculating client.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.28<br />
date: 2015/12/21 10:10:28;  author: root;  state: Exp;  lines: +2 -2<br />
print removed.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.27<br />
date: 2015/12/21 10:06:30;  author: root;  state: Exp;  lines: +5 -5<br />
print staements removed<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.26<br />
date: 2015/12/21 09:56:25;  author: root;  state: Exp;  lines: +1 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.25<br />
date: 2015/12/21 09:50:03;  author: root;  state: Exp;  lines: +2 -2<br />
Print statement corrected.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.24<br />
date: 2015/12/21 09:41:27;  author: root;  state: Exp;  lines: +1 -0<br />
sleep is replaced by wait()<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.23<br />
date: 2015/12/21 09:38:51;  author: root;  state: Exp;  lines: +1 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.22<br />
date: 2015/12/21 09:36:59;  author: root;  state: Exp;  lines: +1 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.21<br />
date: 2015/12/21 09:07:13;  author: root;  state: Exp;  lines: +4 -0<br />
divide is also included in operations.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.20<br />
date: 2015/12/21 08:50:02;  author: root;  state: Exp;  lines: +4 -0<br />
modulo choice is added to switch(req.opr)<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.19<br />
date: 2015/12/21 08:26:26;  author: root;  state: Exp;  lines: +1 -1<br />
loop is executing one more time.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.18<br />
date: 2015/12/21 08:21:43;  author: root;  state: Exp;  lines: +1 -1<br />
ce<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.17<br />
date: 2015/12/21 08:19:40;  author: root;  state: Exp;  lines: +3 -3<br />
Print statement before writion for calculation added.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.16<br />
date: 2015/12/21 08:11:55;  author: root;  state: Exp;  lines: +1 -1<br />
ce<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.15<br />
date: 2015/12/21 08:10:57;  author: root;  state: Exp;  lines: +6 -6<br />
Changes in addresses in read and write statements.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.14<br />
date: 2015/12/21 08:00:30;  author: root;  state: Exp;  lines: +2 -2<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.13<br />
date: 2015/12/21 07:47:37;  author: root;  state: Exp;  lines: +2 -2<br />
&amp;(req+i) changes to (&amp;req+i)<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.12<br />
date: 2015/12/21 07:45:49;  author: root;  state: Exp;  lines: +16 -9<br />
req change to req[i] for client i.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.11<br />
date: 2015/12/21 07:31:19;  author: root;  state: Exp;  lines: +14 -10<br />
fd[i] changes to fd<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.10<br />
date: 2015/12/21 07:12:56;  author: root;  state: Exp;  lines: +5 -5<br />
res changes to res[MAX_SIZE]<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.9<br />
date: 2015/12/21 07:07:57;  author: root;  state: Exp;  lines: +35 -35<br />
fd become fd[MAX_CLIENT]<br />
rfd[4] and wfd[4] becomes rfd[MAX_CLIENT][4] and wfd[MAX_CLIENT][4].<br />
count changes to count[MAX_CLIENT]<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.8<br />
date: 2015/12/21 06:58:49;  author: root;  state: Exp;  lines: +2 -2<br />
sleep removed.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.7<br />
date: 2015/12/21 06:55:16;  author: root;  state: Exp;  lines: +2 -0<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.6<br />
date: 2015/12/21 06:18:23;  author: root;  state: Exp;  lines: +1 -1<br />
client_fifo data type changes from char to string.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.5<br />
date: 2015/12/21 06:16:43;  author: root;  state: Exp;  lines: +1 -1<br />
sprintf() is used for getting RESULTFIFO name.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.4<br />
date: 2015/12/21 06:11:34;  author: root;  state: Exp;  lines: +3 -1<br />
client_fifo is used for RESULT_FIFO.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.3<br />
date: 2015/12/21 05:06:34;  author: root;  state: Exp;  lines: +3 -3<br />
+,-,* are replaced by &#8216;+&#8217;,&#8217;-&#8217;,&#8217;*&#8217; respectively in switch case of operation.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2<br />
date: 2015/12/21 05:04:10;  author: root;  state: Exp;  lines: +13 -3<br />
execl() for subtractor and multiplier are also included along with addition in a switch case which depend on operand of the request by the client.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2015/12/21 04:47:51;  author: root;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>RCS file: subtractor.c,v<br />
Working file: subtractor.c<br />
head: 1.11<br />
branch:<br />
locks: strict<br />
root: 1.11<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 11;    selected revisions: 11<br />
description:<br />
It reads request from server through pipe for subtraction purpose.<br />
It processes the request and get the result.<br />
result is send to server by the pipe.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.11    locked by: root;<br />
date: 2016/01/06 08:53:35;  author: root;  state: Exp;  lines: +2 -2<br />
kill() is removed.<br />
signal is not used.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.10<br />
date: 2016/01/04 10:56:49;  author: root;  state: Exp;  lines: +1 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.9<br />
date: 2016/01/04 10:56:16;  author: root;  state: Exp;  lines: +4 -3<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.8<br />
date: 2016/01/04 10:52:54;  author: root;  state: Exp;  lines: +2 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.7<br />
date: 2016/01/04 10:51:58;  author: root;  state: Exp;  lines: +1 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.6<br />
date: 2016/01/04 10:51:23;  author: root;  state: Exp;  lines: +1 -1<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.5<br />
date: 2016/01/04 10:50:54;  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: 2016/01/04 10:47:34;  author: root;  state: Exp;  lines: +1 -1<br />
exit function is used instead of return.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.3<br />
date: 2016/01/01 02:09:33;  author: root;  state: Exp;  lines: +3 -2<br />
alarm signal is send to server after it writes result to server<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2<br />
date: 2015/12/21 09:59:50;  author: root;  state: Exp;  lines: +1 -1<br />
print statement decreased.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2015/12/21 04:52:26;  author: root;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/01/ciient-server-using-ipc-for-fifopipes-and-signals-for-n-clients/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
