I believe rand() is not async safe as well - you cannot have interruptible calls in your signal handler. Well make that should not have. It uses global variables which is another problem. Plus you are doing a lot in your signal handler, so also consider blocking SIGUSR1 as the first step in your handler. Multiple signals can mess up your code otherwise - especially the rand() call. New applications should use the POSIX signal API (sigaction(2), sigprocmask(2), etc.) which is what you did and that is good.
Next:
could SEGFAULT, but in any case it is undefined behavior: const *signal_name;
Last edited by jim mcnamara; 12-30-2015 at 07:39 PM..
Hi Everybody,
I have gone through man of sigwait and new to UNIX signals. Could anyone explain me about the following lines mentioned in sigwait man help ?
"The selection of a signal in set is independent of the signal
mask of the calling thread or LWP. This means a thread or
LWP can ... (1 Reply)
Hello,
Can anyone, please, guide me on the use of nanosleep. I'm learning threads. I want to introduce a delay (not nested for loops, something more customizable). Nanosleep looked useful (or any other form of customizable and easy-to-use delay). Sleep is too long. :) (2 Replies)
Hi,
Ho do I differentiate system call from library call?
for example if I am using chmod , how do I find out if it is a system call or library call?
Thanks
Muru (2 Replies)
Hi,
I have encountered the following problem on Solaris 10:
I have a thread that is asleep on nanosleep (set to 24 hours).
Something that happens on another thread, causes the nanosleep to exit, even though the time has not elapsed.
The returned value is 0 (so it doesn't look like it... (1 Reply)
Hi,
I have a daq program that runs in an infinite loop until it receives SIGINT. A handler catches the signal and sets a flag to stop the while loop. After the loop some things have to be cleaned up.
The problem is that I want my main while loop to wait until the next full second begins, to... (2 Replies)
Hello,
I have a problem with package and name space.
require "/Mehran/DSGateEngineLib/general.pl";
use strict;
sub System_Status_Main_Service_Status_Intrusion_Prevention
{
my %idpstatus;
my @result;
&General_ReadHash("/var/dsg/idp/settings",\%idpstatus);
#print... (4 Replies)
Application runs on both solaris 6 and 10.
solaris 6 having only posix4.so library, solaris 10 having libposix4.so and librt.so
Can we link application to lposix4 instead of lrt for nanosleep, sothat application will run in both machines? (2 Replies)
Discussion started by: satish@123
2 Replies
LEARN ABOUT DEBIAN
sigsuspend
SIGSUSPEND(2) Linux Programmer's Manual SIGSUSPEND(2)NAME
sigsuspend - wait for a signal
SYNOPSIS
#include <signal.h>
int sigsuspend(const sigset_t *mask);
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
sigsuspend(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE
DESCRIPTION
sigsuspend() temporarily replaces the signal mask of the calling process with the mask given by mask and then suspends the process until
delivery of a signal whose action is to invoke a signal handler or to terminate a process.
If the signal terminates the process, then sigsuspend() does not return. If the signal is caught, then sigsuspend() returns after the sig-
nal handler returns, and the signal mask is restored to the state before the call to sigsuspend().
It is not possible to block SIGKILL or SIGSTOP; specifying these signals in mask, has no effect on the process's signal mask.
RETURN VALUE
sigsuspend() always returns -1, normally with the error EINTR.
ERRORS
EFAULT mask points to memory which is not a valid part of the process address space.
EINTR The call was interrupted by a signal.
CONFORMING TO
POSIX.1-2001.
NOTES
Normally, sigsuspend() is used in conjunction with sigprocmask(2) in order to prevent delivery of a signal during the execution of a criti-
cal code section. The caller first blocks the signals with sigprocmask(2). When the critical code has completed, the caller then waits
for the signals by calling sigsuspend() with the signal mask that was returned by sigprocmask(2) (in the oldset argument).
See sigsetops(3) for details on manipulating signal sets.
SEE ALSO kill(2), pause(2), sigaction(2), signal(2), sigprocmask(2), sigwaitinfo(2), sigsetops(3), sigwait(3), signal(7)COLOPHON
This page is part of release 3.44 of the Linux man-pages project. A description of the project, and information about reporting bugs, can
be found at http://www.kernel.org/doc/man-pages/.
Linux 2008-08-29 SIGSUSPEND(2)