Bu çağrılar proses ve iplik oluşturma , bekleme ,sonlandırma , yürütme,ayarlama,bilgi alma ve hata ayıklamayı sağlayan çağrılardır.
Yeni proses oluşturma --->fork()
Yeni iplik oluşturma --->pthread_create(...)
İplik bekleme çağrısı--->pthread_join(...)
Proses bekleme çağrısı --->wait()
Proses sonlandırma çağrısı --->exit(int statu)
Prosesin ID --->getpid()
Anne prosesinin ID si --->getppid()
Kullanıcı ID si--->getuid()
1-YENİ PROSES OLUŞTURMA ÇAĞRILARI
fork() sistem çağrısı yeni bir proses oluşturur ,kullanılabilmesi için <sys/types.h> ve <unistd.h>
başlık dosyaları program koduna eklenmelidir.Oluşan proses çocuk proses oluşturan ise annedir.
Bu çağrı kullanıldığını anne prosesin birebir kopyası olan bir çocuk proses oluşur.
Anne prosesteki tüm değişkenleri ve kod çocuk prosese kopyalanır her ikisi fork() çağrısından sonraki işlemi yapmaya çalışır.
Fakat ikisinin farklı islemler yapabilmesi için hangi prosesin anne hangi prosesin çocuk olduğu bilinmelidir.
fork() çağrısı çocuk prosese 0 ,anne prosese ise çocuk prosesin tanımlayıcı numarasıyla döner.
#include <iostream>
#include <sys/types.h>
#include <unistd.h>
using namespace std;
int main()
{
pid_t pid; //Dönüş tipimiz
pid=fork(); //Yeni proses oluşturuluyor.
if(pid==0)
cout<<"Ben Cocuk"<<pid<<endl;
else
cout<<"Ben Anne"<<<pid<endl;
}
2-YENİ İPLİK OLUŞTURMA ÇAĞRISI
pthread_create(pthread_t sınırlanan iplik,const pthread_attr_t sınırlanan ozellik,void*(*fonksiyon)(void*),void *restrict arg) çağrısı, yeni iplik oluşturmak için kullanılır.
Bu çağrı <pthread.h> kütüphanesi ile kullanılır.
İlk parametresi pthread_t tipinde bir iplik değişkeni
İkinci parametresi özellikleri ve NULL
Üçüncü parametre ipliğin çalıştıracağı fonksiyonu belirten işaretçidir.
Son parametre ise bu ipliğe gönderilecek parametrelerdir.
Derleme aşamasında lpthread opsiyonu belirtilmelidir.
Yukarıdaki proses örneğine iplik ekleyen C++ programını yazalım
#include <iostream>
#include <pthread.h>
using namespace std;
//İpliğimizin 3.parametresi burada çalıştırmak istediğimizi foksiyonumuzu yazıyoruz
//Asal sayı hesabı olabilir,üslü sayısılarda işlemler olabilir,o sizin keyfinize kalmış artık :)
void *iplik_islemleri(void *i)
{
cout<<"Merhaba ben işaretçi fonksiyonunuzum"<<(int) i<<endl;
}
int main()
{
int iplik_no,i=1;
pthread_t iplik; //İplik bilgilerimizi tutacak.
iplik_no=phtread_create(&iplik,NULL,iplik_islemleri(*i),(void*)i); //İpliğimizi oluşturuldu
pthread_join(iplik,NULL);
//İpliğimiz sonlanana kadar bekliyor
}
SİSTEM ÇAĞRILARI PROSES VE İPLİK YÖNETİM ÇAĞRILARI -1-
Kaydol:
Kayıt Yorumları (Atom)
Spring Boot Uygulamasını Heroku üzerinde Deploy Etme
Bu yazımızda sizlere spring boot ile yazılmış basit bir Rest api'nin heroku üzerinde nasıl deploy edebileceğimizi göstereceğim. Önce ...
-
Bu yazımda hobi olarak ilgilendiğim bug bounty'i anlatmaya çalışacağım. Daha sonra bu konu üzerinde kendimizi geliştirmek için neler yap...
-
Flip-Flop doğruluk tabloları girişlerin durumuna bağlı olarak çıkışların ne olması gerektiğini anlatan tablolardır. Kısaca bir doğruluk tabl...
Hiç yorum yok:
Yorum Gönder