getpid
- C kursu
- İleri seviye
- Ders 10/83
- 5 dk
getpid ve getppid ile süreç kimliğini öğrenirsin.
getpid ve getppid
getpid(), çağıran sürecin kimliğini (PID) döndürür. getppid() ise ebeveyn sürecin kimliğini verir. İkisi de pid_t türünde, negatif olmayan bir tamsayı döndürür.
Her süreç benzersiz bir PID'ye sahiptir. PID 1 genelde init sürecidir. Çocuk fork ile oluşturulduğunda getppid() ebeveynin PID'sini verir. Ebeveyn biterse çocuk init'e evlatlık verilir ve getppid() 1 döner.
PID değerleri
PID'ler işletim sistemi tarafından atanır ve her zaman pozitiftir. fork döndüğü değere bakarak ebeveyn mi çocuk mu olduğunu anlarsın: 0 çocuk, pozitif ebeveyn.
PID'leri doğrudan yazdırmak yerine karşılaştırma için kullanmak daha güvenlidir; çünkü değer sistemden sisteme değişir. Örneğin printf("%d", getpid() > 0) her zaman 1 basar. Bu, PID'nin pozitif olduğunu doğrular.
Uygulama PID'leri denetle
pid_t pid = getpid(); ve pid_t ppid = getppid(); ile kimlikleri al. printf("%d %d\n", pid > 0, ppid > 0); ile her ikisinin pozitif olup olmadığını yazdır. Çıktı 1 1 olmalıdır.
Başlangıç kodu
#include <stdio.h>
#include <unistd.h>
// getpid ve getppid çağır
// her ikisinin > 0 karşılaştırmasını yazdır
int main(void) {
return 0;
}Örnek çözüm
#include <stdio.h>
#include <unistd.h>
int main(void) {
pid_t pid = getpid();
pid_t ppid = getppid();
printf("%d %d\n", pid > 0, ppid > 0);
return 0;
}Beklenen çıktı
1 1
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 getppid() ne döndürür?
- Kendi PID'ni
- Ebeveynin PID'sini Doğru cevap
- 0'ı
- Çocuğun PID'sini
Açıklama: getppid ebeveyn sürecin PID'sini döndürür.
2 PID kavramlarını eşle
| Kavram | Anlamı |
|---|---|
getpid |
Kendi PID |
getppid |
Ebeveyn PID |
pid_t |
PID türü |
fork |
Süreç kopyalar |
3 getpid çağrısı
pid_t me = ____();
pid_t me = getpid();
Açıklama: getpid kendi süreç kimliğini döndürür.