KILL(2) | Sistem Çağrıları | KILL(2) |
İSİM
kill — bir sürece sinyal gönderir
BİLDİRİM
#include <sys/types.h>
#include <signal.h>
int kill | (pid_t pid, int sig); |
- Glibc için özellik sınama makrosu gereksinimi
-
_POSIX_C_SOURCE
(bkz, feature_test_macros(7))
AÇIKLAMA
kill sistem çağrısı bir sürece veya bir süreç grubuna sinyal göndermekte kullanılabilir.
pid
pozitif olduğunda, pid
sürecine sig
sinyali gönderilir.
pid
sıfırsa, o anki sürecin süreç grubundaki her sürece sig
sinyali gönderilir.
pid
-1 ise, 1 numaralı süreç (init) haricindeki her sürece sig
sinyali gönderilir (Aşağıda bahsedilen durum dışında).
pid
-1'den küçükse, -pid
süreç grubundaki her sürece sig
sinyali gönderilir.
sig
sıfırsa, hiçbir sinyal gönderilmez, ancak varlık ve izin denetimleri yapılır; çağrıcının sinyal göndermesine izin verilen bir süreç kimliğinin veya süreç grubu kimliğinin varlığını sınamak için kullanılabilir.
Bir sürecin sinyal gönderme iznine sahip olması için, ya ayrıcalıklı olması (Linux altında: hedef sürecin kullanıcı isim alanında CAP_KILL
yeteneğine sahip olması) ya da gönderen sürecin gerçek veya etkin kullanıcı kimliğinin hedef sürecin gerçek veya etkin kullanıcı kimliğine eşit olması gerekir. SIGCONT
durumunda, gönderen ve alan süreçlerin aynı oturuma ait olması yeterlidir. (Geçmişte kurallar farklıydı; bkz. “NOTLAR”)
DÖNÜŞ DEĞERİ
Başarı durumunda (en azından bir sinyal gönderilmiştir) sıfır döner. Hata oluşursa -1
döner ve hata errno
değişkenine atanır.
HATALAR
-
EINVAL
-
Geçersiz bir sinyal belirtilmiş.
-
ESRCH
-
Süreç kimliği (pid) ya da süreç grubu mevcut değil. Burada bir süreç zombi olabilir, bir süreç sonlandırma almış ancak henüz sinyali beklemiyor (wait(2)) olabilir.
-
EPERM
-
Süreç, alıcı süreçlere sinyal göndermek için yeterli izinlere sahip değil. Bir sürecin sinyal göndermek için yeterli izinlere sahip olması için ya onun root yetkilerine sahip olması ya da gönderici sürecin gerçek ya da etkin kullanıcı kimliğinin alıcı sürecin gerçek ya da kayıtlı kullanıcı kimliği ile aynı olması gerekir. SIGCONT durumunda, gönderici ve alıcı sürecin aynı oturumun üyesi olması yeterlidir.
UYUMLULUK
POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
NOTLAR
1 numaralı süreç olan init sürecine bir sinyal yakalayıcıya sahip olmadığı için bir sinyal göndermek mümkün değildir. Bu, kazaen sistemin çökertilmemesini garanti etmek için böyle yapılmıştır.
POSIX.1, o anki sürecin sinyal gönderebildiği tüm süreçlere (bazı gerçeklenime özgü sistem süreçleri hariç) sig
sinyalinin kill(-1,sig) ile gönderilmesini gerektirir. Linux bir sürecin kendi kendine sinyal gönderebilmesini mümkün kılar ancak, Linux üzerinde kill(-1,sig) çağrısı ile süreç kendisine sinyal gönderemez.
POSIX.1'e göre, bir süreç kendisine bir sinyal gönderirse ve gönderen evrede sinyal engellenmemişse ve engellemesi kaldırılmış veya sigwait(3) ile bekleyen başka evre yoksa, kill işlevi dönmeden önce gönderen evreye engellenmemiş en az bir sinyalin teslim edilmiş olması gerekir.
LINUX TARİHÇESİ
Farklı çekirdek sürümleriyle, Linux, başka bir sürece sinyal gönderecek yetkisiz bir sürece gereken izinler için farklı kurallar getirmiştir. 1.0 dan 1.2.2'ye kadar sürümlü çekirdeklerde, göndericinin etkin kullanıcı kimliği alıcınınkiyle ya da göndericinin gerçek kullanıcı kimliği alıcınınkiyle eşleşmeliydi. 1.2.3 den 1.3.77'ye kadar sürümlü çekirdeklerde, göndericinin etkin kullanıcı kimliği alıcının gerçek ya da etkin kullanıcı kimliği ile eşleşmeliydi. 1.3.78 sürümünden itibaren çekirdek sürümlerinde POSIX.1 uyumlu kurallar geçerlidir.
İLGİLİ BELGELER
exit(2), exit(3), signal(2), signal(7), feature_test_macros(7).
ÇEVİREN
* Özgün Belgenin Lisans ve Telif Hakkı bilgileri: * * Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992 * * %%%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 by Michael Haardt <michael@moria.de> * Modified by Thomas Koenig <ig25@rz.uni-karlsruhe.de> * Modified 1993-07-23 by Rik Faith <faith@cs.unc.edu> * Modified 1993-07-25 by Rik Faith <faith@cs.unc.edu> * Modified 1995-11-01 by Michael Haardt <michael@cantor.informatik.rwth-aachen.de> * Modified 1996-04-14 by Andries Brouwer <aeb@cwi.nl> * [added some polishing contributed by Mike Battersby <mib@deakin.edu.au>] * Modified 1996-07-21 by Andries Brouwer <aeb@cwi.nl> * Modified 1997-01-17 by Andries Brouwer <aeb@cwi.nl> * Modified 2001-12-18 by Andries Brouwer <aeb@cwi.nl> * Modified 2002-07-24 by Michael Kerrisk <mtk.manpages@gmail.com> * Added note on historical rules enforced when an unprivileged process * sends a signal. * Modified 2004-06-16 by Michael Kerrisk <mtk.manpages@gmail.com> * Added note on CAP_KILL * Modified 2004-06-24 by aeb * Modified, 2004-11-30, after idea from emmanuel.colbus@ensimag.imag.fr