C 库函数 - kill()
描述
kill
函数是 C 标准库中的一个函数,用于向指定进程或进程组发送信号。它定义在 <signal.h>
头文件中,并允许程序向其他进程发送信号以影响其行为。
声明
下面是 kill() 函数的声明。
int kill(pid_t pid, int sig);
参数
pid_t pid
:要发送信号的目标进程的进程 ID(PID)。- 如果
pid > 0
,则信号sig
将发送给进程 ID 等于pid
的进程。 - 如果
pid == 0
,则信号sig
将发送给与调用进程属于同一进程组的所有进程。 - 如果
pid < -1
,则信号sig
将发送给进程组 ID 等于pid
的所有进程。 - 如果
pid == -1
,则信号sig
将发送给所有有权限发送信号的进程(除了进程 ID 为 1 的进程)。
- 如果
int sig
:要发送的信号编号。常见的信号包括SIGINT
、SIGTERM
、SIGKILL
等。
返回值
- 成功时返回 0。
- 失败时返回 -1,并设置
errno
以指示错误类型。
实例
以下是一个简单的示例程序,演示如何使用 kill
函数向另一个进程发送 SIGUSR1
信号:
实例
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
int main() {
pid_t pid = getpid(); // 获取当前进程的进程 ID
// 向当前进程发送 SIGUSR1 信号
if (kill(pid, SIGUSR1) == -1) {
perror("kill");
return 1;
}
printf("SIGUSR1 signal sent to process %d.\n", (int)pid);
return 0;
}
#include <signal.h>
#include <unistd.h>
int main() {
pid_t pid = getpid(); // 获取当前进程的进程 ID
// 向当前进程发送 SIGUSR1 信号
if (kill(pid, SIGUSR1) == -1) {
perror("kill");
return 1;
}
printf("SIGUSR1 signal sent to process %d.\n", (int)pid);
return 0;
}
编译并运行程序后,输出将是:
SIGUSR1 signal sent to process [进程ID].