As far as I understood your question you want to signal a process by its name, not by its PID. This can easily be achieved by combining the two commands:

kill -s signal $(ps -C executable)


Does it kill the process that signals?

kill can kill. It doesn't necessarily.

From man kill:

The command kill sends the specified signal to the specified processes or process groups.

That means, the kill command is used to **send any signal in general.

If it kills a process it means that it's similar to do exit(0), or does the process resume after the signal is sent back?

From here:

The SIGKILL signal is used to cause immediate program termination. It cannot be handled or ignored, and is therefore always fatal. It is also not possible to block this signal.

If a process receives the SIGKILL signal, it terminates immediately (no destructors called, no cleanup done). The only processes that do not terminate are uninterruptible processes.


A full list of signals available on Linux is found here.

Answer from cadaniluk on Stack Overflow
🌐
Baeldung
baeldung.com › home › processes › how to send a signal to a process without killing or stopping it
How to Send a Signal to a Process Without Killing or Stopping It | Baeldung on Linux
March 18, 2024 - Signals are one of the main inter-process communication (IPC) methods in Linux. Some signals are for killing processes, while others are simply notifications. In this tutorial, we explore ways to send a non-terminating signal to a process. First, we list and discuss interrupting and ...
🌐
GeeksforGeeks
geeksforgeeks.org › linux-unix › shell-scripting-how-to-send-signal-to-a-processes
Shell Scripting - How to send Signal to a Processes - GeeksforGeeks
July 23, 2025 - Install xlogo if it is not present in your system. ... After running the process in foreground, the shell prompt will be unavailable. Pressing Ctrl+C sends an Interrupt signal (SIGINT) to the process and the process terminates.
Top answer
1 of 3
63

A signal handler is just a function within a given process' address space. This function is executed whenever the signal is received. There's nothing special about it (although there are certain actions that should not be performed within a signal handler), and it does not reside in a special thread.

While signals are often described as being software interrupts, they aren't actually asynchronous.* When a signal is sent to a process, the kernel adds it to the process' pending signal set. It doesn't cause anything to happen immediately. The signal will only actually do anything at the next context switch back to userspace (whether that's a syscall returning or the scheduler switching to that process). If a process were to, for whatever reason, never switch from kernel to user, the signal would be kept in the pending signal set and never acted upon. This is why some processors can get stuck doing I/O ("uninterruptable sleep") and are seemingly unkillable, even with SIGKILL.

When a process establishes a signal handler, it gives the kernel an address to a function. When the process is to receive a signal, the next context switch from kernelspace to userspace will not restore the execution context from before the process entered the kernel (usually, the context is saved when entering the kernel and restored upon exiting it). Instead, it will "restore" execution at the location of the signal handler. The signal handler doesn't return to where it was called from, but to a piece of code called a trampoline which then calls rt_sigreturn(), which restores the real execution context, allowing the process to continue where it left off.

When a process has multiple threads (i.e. there are multiple processes in a given thread group), the signal is sent to one of the threads in the thread group at random. This is because threads typically share memory and many other resources and run the same code.

The execution of a signal handler is described in more detail in signal(7). Whenever there is a transition from kernel to user and there is a pending unblocked signal, the following steps occur:

   (1)  The kernel performs the necessary preparatory steps for
        execution of the signal handler:

        (1.1)  The signal is removed from the set of pending signals.

        (1.2)  If the signal handler was installed by a call to
               sigaction(2) that specified the SA_ONSTACK flag and
               the thread has defined an alternate signal stack
               (using sigaltstack(2)), then that stack is installed.

        (1.3)  Various pieces of signal-related context are saved
               into a special frame that is created on the stack.
               The saved information includes:

               •  the program counter register (i.e., the address of
                  the next instruction in the main program that
                  should be executed when the signal handler
                  returns);

               •  architecture-specific register state required for
                  resuming the interrupted program;

               •  the thread's current signal mask;

               •  the thread's alternate signal stack settings.

               If the signal handler was installed using the
               sigaction(2) SA_SIGINFO flag, then the above
               information is accessible via the ucontext_t object
               that is pointed to by the third argument of the signal
               handler.  This object reflects the state at which the
               signal is delivered, rather than in the handler; for
               example, the mask of blocked signals stored in this
               object will not contain the mask of new signals
               blocked through sigaction(2).

        (1.4)  Any signals specified in act->sa_mask when registering
               the handler with sigaction(2) are added to the
               thread's signal mask.  The signal being delivered is
               also added to the signal mask, unless SA_NODEFER was
               specified when registering the handler.  These signals
               are thus blocked while the handler executes.

   (2)  The kernel constructs a frame for the signal handler on the
        stack.  The kernel sets the program counter for the thread to
        point to the first instruction of the signal handler
        function, and configures the return address for that function
        to point to a piece of user-space code known as the signal
        trampoline (described in sigreturn(2)).

   (3)  The kernel passes control back to user-space, where execution
        commences at the start of the signal handler function.

   (4)  When the signal handler returns, control passes to the signal
        trampoline code.

   (5)  The signal trampoline calls sigreturn(2), a system call that
        uses the information in the stack frame created in step 1 to
        restore the thread to its state before the signal handler was
        called.  The thread's signal mask and alternate signal stack
        settings are restored as part of this procedure.  Upon
        completion of the call to sigreturn(2), the kernel transfers
        control back to user space, and the thread recommences
        execution at the point where it was interrupted by the signal
        handler.

* While they aren't asynchronous from the perspective of hardware, they are effectively asynchronous as far as userspace applications are concerned. This is why they are sometimes called software interrupts.

† When I refer to context switches, I mean privilege or process switches (i.e. both simple mode transitions between kernel and user within the same process and "true" context switches between processes or kernel threads).

‡ On some Unix systems, the kernel passes control to the trampoline first, not the signal handler. The trampoline calls the signal handler and then, once it returns, sigreturn().

2 of 3
10

The interrupt handler (signal handler) is not the process thread, nor any thread running under that process, correct?

The kernel doesn't start a new thread to execute a signal handler. It executes the signal handler on an existing thread. We could say that the signal is delivered to that particular thread. Basically, the thread drops whatever it was doing before, and executes the signal handler. After the signal handler returns, it goes back to what it was doing before. (forest's answer goes into more detail about how exactly the kernel schedules this.) But a key difference between this and an ordinary function call is that you don't have control over when it happens. So for example, on a platform where 32-bit accesses are atomic and 64-bit accesses are not, it's possible that the thread is in the middle of writing to a int64_t variable when the signal handler invocation occurs. Therefore, even in a single-threaded program, the signal handler must guard against "the thread racing against itself", so to speak. Consequently, the set of operations you can perform safely inside a signal handler is very limited.

The sender of a signal can choose to send it to a particular thread, for example by calling tgkill, or target an entire process. When a signal is sent to a process, the kernel selects one of the threads in the process to deliver it to. See What happens to a multithreaded Linux process if it gets a signal?

Note that if the behaviour of the signal is to terminate the recipient (e.g. SIGKILL, or SIGTERM with the default handler) then the entire process terminates even if you direct it at a particular thread.

🌐
Substack
linuxopsys.substack.com › linux process signals explained
Linux Process Signals Explained - by Sukhveer Sanghera
June 19, 2025 - Ctrl+C # Send SIGINT to stop the process Ctrl+Z # Send SIGTSTP to pause the process fg # Resume the process in the foreground bg # Resume the process in the background · This is especially helpful when you’re juggling multiple terminal jobs. If you ever need to see the full list of signals supported on your system, run:
🌐
Hewlett Packard Enterprise Community
community.hpe.com › t5 › operating-system-hp-ux › sending-signals-to-process-running-as-another-user › td-p › 4999181
Solved: Sending signals to process running as another user - Hewlett Packard Enterprise Community
August 23, 2006 - This is a case where reading the man 2 kill page will really tell you how feasible your plan is --- but to cut to the chase, the answer is no. A kill() can only send signals to processes whose effective UID's match unless the sender's UID is 0. If signals were handled any other way, absolute chaos would result because any user would be able to kill() any other user's process.
🌐
Network World
networkworld.com › home › blogs › unix as a second language
Unix: Sending signals to processes | Network World
November 11, 2013 - Signals can be sent to processes using the kill command, but this is not the only way that this occurs. When you issue a ^c command to end a foreground process, you are sending a signal 2 (SIGINT) to the process. When you ^d to log out or exit a shell, you are sending a sending a signal 3 (SIGQUIT).
Find elsewhere
🌐
The Geek Stuff
thegeekstuff.com › 2011 › 02 › send-signal-to-process
UNIX / Linux: 3 Ways to Send Signal to Processes
February 5, 2011 - SIGINT (Ctrl + C) – You know this already. Pressing Ctrl + C kills the running foreground process. This sends the SIGINT to the process to kill it. You can send SIGQUIT signal to a process by pressing Ctrl + \ or Ctrl + Y
🌐
Vitalik Buterin
vitalik.eth.limo › general › 2026 › 04 › 02 › secure_llms.html
My self-sovereign / local / private / secure LLM setup, April 2026
Here is a daemon I wrote that wraps around signal-cli and email: ... Unlike the more naive "allow everything" chat integrations that are popular, this daemon enforces a strict firewalling policy. Fully autonomously, the daemon is only able to do two things: (i) read messages, and (ii) send messages ONLY to yourself. You can also send messages to others, but that requires going through a manual confirmation process...
🌐
NVIDIA Developer Forums
forums.developer.nvidia.com › graphics / linux › linux
System freeze on reboot/poweroff, no signal - Linux - NVIDIA Developer Forums
April 6, 2026 - This has been an issue since I bought my Palit Gamerock 5090, though I don’t reboot my PC often so it’s not that inconvenient. Right after the reboot sequence finishes, there are messages like watchdog: watchdog0: watchdog did not stop! and then there’s a “No signal” message on the ...
🌐
R-lib
ps.r-lib.org › reference › ps_send_signal.html
Send signal to a process — ps_send_signal • ps
px <- processx::process$new("sleep", "10") p <- ps_handle(px$get_pid()) p #> <ps::ps_handle> PID=8415, NAME=sleep, AT=2026-04-20 16:45:03.07573 ps_send_signal(p, signals()$SIGINT) #> NULL p #> <ps::ps_handle> PID=8415, NAME=???, AT=2026-04-20 16:45:03.07573 ps_is_running(p) #> [1] FALSE px$get_exit_status() #> [1] -2
🌐
GeeksforGeeks
geeksforgeeks.org › linux-unix › signal-handling-in-linux-through-the-signal-function
Signal Handling In Linux Through The signal() Function - GeeksforGeeks
July 23, 2025 - Previously, it killed processes. In actuality, it does convey a signal. Each signal is identified by a unique number. It can transmit any signal, but by default, it sends signal 15 or SIGTERM. You can register your own signal handler using one of the various interfaces. The oldest one is this one. It takes two arguments: a reference to a signal handler code and a signal number (one of those SIGsomethings).
🌐
GitHub
github.com › aristocratos › btop
GitHub - aristocratos/btop: A monitor of resources · GitHub
Enables signal sending to any process without starting with sudo and can prevent /proc read permissions problems on some systems.
Starred by 33.5K users
Forked by 1.1K users
Languages   C++ 79.9% | C 18.2% | Makefile 1.1% | CMake 0.8%
🌐
Red Hat
access.redhat.com › solutions › 165993
How to track who/what is sending SIGKILL to a process? - Red Hat Customer Portal
3 weeks ago - Now try to kill a process with the killall command. # killall -9 <procname> [root@RHEL9 ~]# killall -9 httpd [root@RHEL9 ~]# [root@RHEL9 ~]# systemctl status httpd.service × httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: failed (Result: signal) since Tue 2022-07-05 11:44:45 IST; 2s ago Docs: man:httpd.service(8) Process: 15200 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=killed, signal=KILL) Main PID: 15200 (code=killed, signal=KILL) Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec: 0 B/sec" CPU: 655ms Jul 05 11:44:45 RHEL9.example.com systemd[1]: httpd.service: Killing process 15407 (n/a) with signal SIGKILL.
🌐
Northern Illinois University
faculty.cs.niu.edu › ~hutchins › csci480 › signals.htm
LINUX Signals
This sends a signal S to a specified process (if PID >0) or to all members of a specified process group (if PID = 0) or to all processes on the system (if PID = -1).
🌐
FMCSA
fmcsa.dot.gov › registration › ask-fmcsa
AskFMCSA | FMCSA
The goal of the new registration system is to transition from a paper-based registration system to a completely online process where common transactions can be completed in minutes. We recognize, however, that a small percentage of applicants may not have a computer or smart device, Internet access, computer skills, or a combination of the above.
🌐
Moabukar
unix-learn.moabukar.co.uk › processes › process-signals
Process Signals - Learn Linux & Networking
Software issues can occur and the kernel wants to notify the process ... When a signal is generated by some event, it's then delivered to a process, it's considered in a pending state until it's delivered. When the process is ran, the signal will be delivered.
🌐
Blogger
puremonkey2010.blogspot.com › 2015 › 06 › linux-unix-linux-3-ways-to-send-signal.html
程式扎記: [Linux 文章收集] UNIX / Linux: 3 Ways to Send Signal to Processes
June 4, 2015 - Send Signal to a Process from Keyboard When a process is running on the terminal, you can send signal to that process from the keyboard by using some specific combination of keys. The following are couple of examples. * SIGINT (Ctrl + C) – You know this already. Pressing Ctrl + C kills the ...
🌐
Signal
support.signal.org › hc › en-us › articles › 360007059752-Backup-and-Restore-Messages
Backup and Restore Messages – Signal Support
Signal messages, pictures, files, and other contents are stored locally on your device. If you have your old device, select the platform to transfer messages: Android iOS Desktop Message restora...