.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de)
.\" and Copyright (C) 2008 Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\" %%%LICENSE_START(VERBATIM)
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one.
.\"
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein.  The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\" %%%LICENSE_END
.\"
.\" Modified Sat Jul 24 18:40:56 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified 1995 by Mike Battersby (mib@deakin.edu.au)
.\"
.TH RAISE 3  2021-03-22 "GNU" "Linux Programmer's Manual"
.SH NAME
raise \- send a signal to the caller
.SH SYNOPSIS
.nf
.B #include <signal.h>
.PP
.BI "int raise(int " sig );
.fi
.SH DESCRIPTION
The
.BR raise ()
function sends a signal to the calling process or thread.
In a single-threaded program it is equivalent to
.PP
.in +4n
.EX
kill(getpid(), sig);
.EE
.in
.PP
In a multithreaded program it is equivalent to
.PP
.in +4n
.EX
pthread_kill(pthread_self(), sig);
.EE
.in
.PP
If the signal causes a handler to be called,
.BR raise ()
will return only after the signal handler has returned.
.SH RETURN VALUE
.BR raise ()
returns 0 on success, and nonzero for failure.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.ad l
.nh
.TS
allbox;
lbx lb lb
l l l.
Interface	Attribute	Value
T{
.BR raise ()
T}	Thread safety	MT-Safe
.TE
.hy
.ad
.sp 1
.SH CONFORMING TO
POSIX.1-2001, POSIX.1-2008, C89, C99.
.SH NOTES
Since version 2.3.3, glibc implements
.BR raise ()
by calling
.BR tgkill (2),
.\" 2.3.2 used the obsolete tkill(), if available.
if the kernel supports that system call.
Older glibc versions implemented
.BR raise ()
using
.BR kill (2).
.SH SEE ALSO
.BR getpid (2),
.BR kill (2),
.BR sigaction (2),
.BR signal (2),
.BR pthread_kill (3),
.BR signal (7)
