İ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