09-27-2009
why multiple SIGINT raises when i hit C-c
hi,
in my application, i have set up to capture SIGINT and execute a handler.the problem is whenever i hit C-c, multiple SIGINT are sent to the application.I have blocked the SIGINT right after catching the first one but it is unsuccessful.Here is what i do :
jmp_buf main_loop;
int main()
{
signal(SIGINT,CleanExit);
sigset_t set;
sigset_t old_set;
sigemptyset(&set);
sigemptyset(&old_set);
sigaddset (&set, SIGINT);
// run other threads ...
while( 1 )
{
if ( setjmp (main_loop) )
{
pthread_sigmask(SIG_BLOCK,&set,&old_set);
/// Clean up and shut down threads
pthread_sigmask(SIG_UNBLOCK,&set,&old_set);
break;
}
}
printf("\nbye!\n");
return 0;
}
void CleanExit()
{
shutdownThreads = 1;
longjmp (main_loop, 1);
}
The problem is the CleanExit method runs 3 to 4 times which means the pthread_sigmask(SIG_BLOCK,&set,&old_set); has not done the job.
So what is the problem?
My application is running in mulinux.
Thanks in advance,
Sedighzade
7 More Discussions You Might Find Interesting
1. Programming
For a program I am designing, which involves handling the keyboard input Ctrl^c (SIGINT), it is taking ages for the program to actually recognise and perform the corresponding action whenever I run it and hit Ctrl^C at the CL. I have to do at least 3 Ctrl^Cs before the program will actually... (3 Replies)
Discussion started by: JamesGoh
3 Replies
2. Programming
Hi all,
I have this method to read a string from a STDIN:
void readLine(char* inputBuffer){
fgets (inputBuffer, MAX_LINE, stdin);
fflush(stdin);
/* remove '\n' char from string */
if(strlen(inputBuffer) != 0)
inputBuffer = '\0';
}
All work fine but if i... (1 Reply)
Discussion started by: hurricane86
1 Replies
3. Shell Programming and Scripting
I've written a bash script which captures video with DVgrab. Because of the nature of the tapes that I am digitizing, sometimes I want to quit capturing before the time that I set for DVgrab. When this is the case I press Ctrl-c and DVgrab exits cleanly, my problem is that there is additional... (5 Replies)
Discussion started by: Starcast
5 Replies
4. Shell Programming and Scripting
Tried to add a function to my control_c interrupt here. It works but has one little bug. If the user selects to run the function instead of exiting, the program restarts itself without forking as it should. However, after that control_c no longer works again. I wanted to allow the user to run... (1 Reply)
Discussion started by: Azrael
1 Replies
5. UNIX for Dummies Questions & Answers
May i know what are the possible causes for SIGINT other than ctrl-c?
Thanks (17 Replies)
Discussion started by: pandeesh
17 Replies
6. Shell Programming and Scripting
The following command will run and wait for input from the user.
/usr/sap/SAP/webdisp/wdispmon pf=/usr/sap/SAP/webdisp/profile
What I would like to do is (in one command):
- Add the above line to a ksh script
- Receive the output
- and send a SIGINT
I have seen many posts on how to... (3 Replies)
Discussion started by: sapsid
3 Replies
7. Shell Programming and Scripting
Hi,
I have a problem where i have to hit multiple URL that are stored in a text file (input.txt) and save their output in different text file (output.txt) somewhat like :
cat input.txt
http://192.168.21.20:8080/PPUPS/international?NUmber=917875446856... (3 Replies)
Discussion started by: mukulverma2408
3 Replies
LEARN ABOUT DEBIAN
sttermaction
stsignal(3) ShapeTools Toolkit Library stsignal(3)
NAME
stCatchSigs, stInterruptAction, stQuitAction, stTermAction, stCleanup, stExit - signal handling
SYNOPSIS
#include <config.h>
#include <sttk.h>
void stCatchSigs (void);
Sfunc_t(*stInterruptAction)();
Sfunc_t(*stQuitAction)();
Sfunc_t(*stTermAction)();
void stCleanup (void);
void stExit (int exitCode);
DESCRIPTION
stCatchSigs activates a number of interrupt handlers, defined internally in the ShapeTools toolkit library. Interrupt handlers are defined
for the signals SIGINT, SIGQUIT, SIGFPE, SIGBUS, SIGSEGV, and SIGTERM. All interrupt handlers, except the one for SIGINT, cause program
termination after having done some cleanup work. The cleanup consists of removing all temporary files by calling stRmRegisteredFiles(3).
Some of the signal handlers are capable to execute functions defined by the application, while handling the interrupt. This mechanism is
activated by assigning a functions address to the appropriate variable. The following is a complete List.
Signal Variable
SIGINT stInterruptAction
SIGQUIT
stQuitAction
SIGTERM
stTermAction
stCleanup calls stRmRegisteredFiles(3) to remove all temporary files and the AtFS function af_cleanup(3) that orders AtFS's affairs.
stExit does the same as stCleanup and additionally end the program execution returning exitCode.
SEE ALSO
signal (3), stRmRegisteredFiles(3), af_cleanup(3).
sttk-1.7 Thu Jun 24 17:43:32 1993 stsignal(3)