10-22-2010
perror question
My question was why first time trought the main loop my output gives ...
blocked signal:success and all the other time trought the loop gives illegal seek
The other question was why when program is just about done (second last line of code) my output gives....didn't change mask:success
10 More Discussions You Might Find Interesting
1. Programming
does the way of handling, interrupting signals in HP-UX same as that of solaris. If there is difference than what it is.?:confused: (1 Reply)
Discussion started by: kapilv
1 Replies
2. UNIX for Dummies Questions & Answers
(posted this in the scripting forum as well, but figured it should go here) So, what's going on is this:
For our program, we had to create our own shell, and if the user pressed ctrl-c just at the cmdline, then this signal would be ignored, but if there is a foreground process running, let's... (0 Replies)
Discussion started by: blind melon
0 Replies
3. Programming
How can use signals in a C program If i want a child program to signal it's parent program that it(child) program has completed the task that it was assigned.:confused: (2 Replies)
Discussion started by: kapilv
2 Replies
4. Programming
Dear all,
I use perror in order to print an error message to the standar error. For example
if a C program is called without its two necessary command line parameters
then :
if (argc != 3)
{
perror("use: ./myProgram <source file> <target file>\n");
return 1;
}
Now the... (2 Replies)
Discussion started by: dariyoosh
2 Replies
5. Programming
here the program gives a odd result:
#include <stdio.h>
int main(){
perror("first");
perror("next");
return 0;
}
result:
first: Success
next: Illegal seek
why? any resonable explanation? i found no information about this in man pages.
thanks in advance (2 Replies)
Discussion started by: ebd
2 Replies
6. Programming
I have problem with my application. Application is running on embedded Linux machine. It's basically multiprotocol gateway that connects two industrial Ethernet networks.
We are experiencing some kind of application hang every 2 to 3 days. It seems like both threads are still running but... (12 Replies)
Discussion started by: _thomas
12 Replies
7. UNIX for Dummies Questions & Answers
I am having trouble with folowing
sigset_t s; // now s represents set of signals
sigemptyset(&s) ; // initialize this set and exclude all the signals from it.is it empty?
sigaddset(&s,SIGILL);//this set containts only SIGILL signal
sigprocmask(SIG_BLOCK,&s,NULL);//lost on this one
Can... (3 Replies)
Discussion started by: joker40
3 Replies
8. UNIX for Dummies Questions & Answers
I know how to add signal to a set. But what if I want to add 2 or 3 signals to the set.
I know I can use sigaddset (&set,SIGBUS)....but what if I want to add SIGBUS and SIGALRM at once. Do i have to do it like this..
sigaddset (&set,SIGBUS);
sigaddset (&set,SIGALRM);
Is there another way to... (0 Replies)
Discussion started by: joker40
0 Replies
9. Programming
i am trying to use the perror function:
something like
perror("WRONG!!!");
but when i see the message in the terminal, it comes out like
WRONG!!! : Success
How can i change it to
WRONG!!! : WRONG!!!
well i just want to have my own custom message for the part after the colon... (1 Reply)
Discussion started by: omega666
1 Replies
10. UNIX for Advanced & Expert Users
Hi All,
The problem statement is as below:
Problem: A process (exe) is getting executed in background. The output of this process is getting logged in a file. After successfully running for some time the process gets terminated. In the log file following is present:
^M[7m Interrupt ^M[27m... (8 Replies)
Discussion started by: Praty.27
8 Replies
LEARN ABOUT X11R4
pthread_sigmask
PTHREAD_SIGMASK(3) Linux Programmer's Manual PTHREAD_SIGMASK(3)
NAME
pthread_sigmask - examine and change mask of blocked signals
SYNOPSIS
#include <signal.h>
int pthread_sigmask(int how, const sigset_t *set, sigset_t *oldset);
Compile and link with -pthread.
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
pthread_sigmask():
_POSIX_C_SOURCE >= 199506L || _XOPEN_SOURCE >= 500
DESCRIPTION
The pthread_sigmask() function is just like sigprocmask(2), with the difference that its use in multithreaded programs is explicitly speci-
fied by POSIX.1. Other differences are noted in this page.
For a description of the arguments and operation of this function, see sigprocmask(2).
RETURN VALUE
On success, pthread_sigmask() returns 0; on error, it returns an error number.
ERRORS
See sigprocmask(2).
ATTRIBUTES
For an explanation of the terms used in this section, see attributes(7).
+------------------+---------------+---------+
|Interface | Attribute | Value |
+------------------+---------------+---------+
|pthread_sigmask() | Thread safety | MT-Safe |
+------------------+---------------+---------+
CONFORMING TO
POSIX.1-2001, POSIX.1-2008.
NOTES
A new thread inherits a copy of its creator's signal mask.
The glibc pthread_sigmask() function silently ignores attempts to block the two real-time signals that are used internally by the NPTL
threading implementation. See nptl(7) for details.
EXAMPLE
The program below blocks some signals in the main thread, and then creates a dedicated thread to fetch those signals via sigwait(3). The
following shell session demonstrates its use:
$ ./a.out &
[1] 5423
$ kill -QUIT %1
Signal handling thread got signal 3
$ kill -USR1 %1
Signal handling thread got signal 10
$ kill -TERM %1
[1]+ Terminated ./a.out
Program source
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <errno.h>
/* Simple error handling functions */
#define handle_error_en(en, msg)
do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0)
static void *
sig_thread(void *arg)
{
sigset_t *set = arg;
int s, sig;
for (;;) {
s = sigwait(set, &sig);
if (s != 0)
handle_error_en(s, "sigwait");
printf("Signal handling thread got signal %d
", sig);
}
}
int
main(int argc, char *argv[])
{
pthread_t thread;
sigset_t set;
int s;
/* Block SIGQUIT and SIGUSR1; other threads created by main()
will inherit a copy of the signal mask. */
sigemptyset(&set);
sigaddset(&set, SIGQUIT);
sigaddset(&set, SIGUSR1);
s = pthread_sigmask(SIG_BLOCK, &set, NULL);
if (s != 0)
handle_error_en(s, "pthread_sigmask");
s = pthread_create(&thread, NULL, &sig_thread, (void *) &set);
if (s != 0)
handle_error_en(s, "pthread_create");
/* Main thread carries on to create other threads and/or do
other work */
pause(); /* Dummy pause so we can test program */
}
SEE ALSO
sigaction(2), sigpending(2), sigprocmask(2), pthread_create(3), pthread_kill(3), sigsetops(3), pthreads(7), signal(7)
COLOPHON
This page is part of release 4.15 of the Linux man-pages project. A description of the project, information about reporting bugs, and the
latest version of this page, can be found at https://www.kernel.org/doc/man-pages/.
Linux 2017-09-15 PTHREAD_SIGMASK(3)