İSİM¶
kill - bir sürece sinyal gönderir
KULLANIM¶
#include <sys/types.h>
#include <signal.h>
int kill (pid_t pid, int sig);
AÇIKLAMA¶
kill sistem çağrısı bir sürece veya
bir süreç grubuna bir 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, sinyal gönderilmez, bunun yerine hata
denetimi yapılır.
DÖNÜŞ DEĞERݶ
Başarı durumunda 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 wait()lenmiş 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.
NOTLAR¶
1 numaralı görev 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 1003.1-2001, o anki sürecin sinyal gönderebildiği
tüm süreçlere (bazı oluşum
tanımlı sistem süreçleri hariç)
sig
sinyalinin
kill(-1,sig) ile gönderilmesini gerektirir. Linux bir
sürecin kendi kendini sinyalleyebilmesini mümkün
kılar ancak, Linux üzerinde
kill(-1,sig)
çağrısı sürecin kendisini sinyallemez.
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 1003.1-2001 uyumlu kurallar
geçerlidir.
UYUMLULUK¶
SVr4, SVID, POSIX.1, X/OPEN, BSD 4.3, POSIX 1003.1-2001
İLGİLİ BELGELER¶
exit(2),
exit(3),
signal(2),
signal(7).
ÇEVİREN¶
Nilgün Belma Bugüner <nilgun (at)
belgeler·gen·tr>, Kasım 2003