kill - bir sürece sinyal gönderir
#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))
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)
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.
- 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.
POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
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.
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.
exit(2),
exit(3),
signal(2),
signal(7),
feature_test_macros(7).
© 2003, 2022 Nilgün Belma Bugüner
Bu çeviri özgür yazılımdır:
Yasaların izin verdiği ölçüde
HİÇBİR GARANTİ YOKTUR.
Lütfen, çeviri ile ilgili bildirimde bulunmak veya çeviri
yapmak için
https://github.com/TLBP/manpages-tr/issues adresinde
"New Issue" düğmesine tıklayıp yeni bir
konu açınız ve isteğinizi belirtiniz.