klon (sistem çağrısı)

clone()​Bir olan sistem çağrısı ait Linux çekirdeği Oluşturulan süreç oğul pay aynı yürütme içeriği o babasının (aynı adres alanı). Linux altında iş parçacıkları uygulayan bazı kütüphaneler tarafından kullanılır . Uygulamada, clone()​hiçbir zaman doğrudan değil, bir iş parçacığı yönetimi kitaplığı ( işlevi sağlayan pthreads gibi) aracılığıyla çağrılır phtread_create()​.

Bu işlevin prototipi aşağıdaki gibidir:

#include <sched.h> int clone (int (*fn) (void *), void *child_stack, int flags, void *arg);

clone()​parametrenin gösterdiği işlevi çalıştırarak yeni bir iş parçacığı oluşturur fn​( fork()​yürütmenin bir sonraki ifadede devam ettiği yerin tersi ). Parametre child_stack​, yeni yürütme iş parçacığı için yığın olarak kullanılan bellek alanına bir göstericidir (ilk önce bir çağrı ile ayrılması malloc()​ gerekir; son bellek yuvasını göstermesi gerekir). Parametre flags​, alt öğenin üst öğenin yürütme bağlamından neyi devralması gerektiğini belirtir. Parametre arg​, argümanları işleve iletmek için genel bir göstericidir fn​. Bu çağrı, başarı durumunda çocuğun iş parçacığı kimliğini veya başarısız olması durumunda -1'i döndürür (ve errno​buna göre değerlenir).

Bu sistem çağrısının Linux çekirdeğine özgü olduğunu ve diğer çekirdekler için derlenmesi amaçlanan kodda kullanılmaması gerektiğini unutmayın.

Notlar ve referanslar

  1. klon (2) Linux kılavuz sayfası
  2. (inç) Daniel Robbins, "  POSIX Threads Explained  " , IBM developerWorks

Ayrıca görün

Kaynakça

  • Linux Programlama Arayüzü: Bir Linux ve UNIX Sistem Programlama El Kitabı, Michael Kerrisk, sayfalar 598-609