kill()

kill()是一個計算機程式語言函式,Kill函式可以對進程傳送signal();

在linux里使用的Kill命令。實際上是對Kill()函式的一個包裝;

基本介紹

  • 函式名:kill
  • 功 能:給指定進程傳送指定信號
  • 函式原型:int kill(pid_t pid, int sig);
  • 表頭檔案:#include <signal.h>#include <sys/types.h>
  • 返回值:成功返回 0; 否則,返回 -1 
程式例,Linux C,man手冊,

程式例

編寫一個函式,功能是殺死另一個進程:
#include<stdio.h>    //printf()#include<stdlib.h>    //exit()#include<unistd.h>    //fork()#include<signal.h>     int main(int argc, char const *argv[]){    if(argc != 2)    {        printf("Please input pid\n");        return 0;    }    int pid =1;    sscanf(argv[1], "%d",  &pid);    if(pid > 0)    {        kill(pid, SIGINT);    }    return 0;}

Linux C

信號傳送函式—kill()
頭檔案:#include <sys/types.h>#include <signal.h>
原型: int kill(pid_t pid,int signo)
功能
向進程或進程組傳送一個信號 (成功返回 0; 否則,返回 -1 )
參數說明
pid:接收信號的進程(組)的進程號
pid>0:傳送給進程號為pid的進程
pid=0:傳送給當前進程所屬進程組裡的所有進程
pid=-1:傳送給除1號進程和自身以外的所有進程
pid<-1:傳送給屬於進程組-pid的所有進程
signo:傳送的信號值
Signo = 0:不傳送信號,可用於檢查目標進程是否存在,以及當前進程是否具有向目標進程傳送信號的許可權(root許可權的進程可以向任何進程傳送信號,非root許可權的進程只能向屬於同一個session或者同一個用戶的進程傳送信號)。
信號值 1 - 31叫做不可靠信號不支持排隊, 信號可能會丟失, 也叫做非實時信號。
34 - 64 叫做可靠信號,支持排隊, 信號不會丟失, 也叫做實時信號
比較常用的一些信號值
SIGHUP 1 A 終端掛起或者控制進程終止
SIGINT 2 A 鍵盤中斷(如break鍵被按下)
SIGQUIT 3 C 鍵盤的退出鍵被按下
SIGILL 4 C 非法指令
SIGABRT 6 C 由abort(3)發出的退出指令
SIGFPE 8 C 浮點異常
SIGKILL 9 AEF Kill信號
SIGSEGV 11 C 無效的記憶體引用
SIGPIPE 13 A 管道破裂: 寫一個沒有讀連線埠的管道
SIGALRM 14 A 由alarm(2)發出的信號
SIGTERM 15 A 終止信號
SIGUSR1 30,10,16 A 用戶自定義信號1
SIGUSR2 31,12,17 A 用戶自定義信號2
SIGCHLD 20,17,18 B 子進程結束信號
SIGCONT 19,18,25 進程繼續(曾被停止的進程)
SIGSTOP 17,19,23 DEF 終止進程
SIGTSTP 18,20,24 D 控制終端(tty)上按下停止鍵
SIGTTIN 21,21,26 D 後台進程企圖從控制終端讀
SIGTTOU 22,22,27 D 後台進程企圖從控制終端寫

man手冊

SYNOPSIS
#include <signal.h>
int kill(pid_t pid, int sig);
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
kill(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE
DESCRIPTION
The kill() system call can be used to send any signal to any process
group or process.

相關詞條

熱門詞條

聯絡我們