Bunun çalışacağını düşünüyorum, ama işaretçi argümanlar bazıları hakkında tamamen emin değilim. bayraklar ise
pid_t child = clone(child_f, child_stack,
/* int flags */ SIGCHLD,
/* argument to child_f */ NULL,
/* pid_t *pid */ NULL,
/* struct usr_desc * tls */ NULL,
/* pid_t *ctid */ NULL);
bunun alt bayt parçacığı ebeveyn ölen ya durdurma gibi şeyler yapıyor bildirmek için göndermeye hangi sinyalin belirtmek için kullanılır Parametre. Tüm gerçek bayrakların fork
'dan farklı anahtarlar açtığına inanıyorum. Çekirdek koduna baktığımızda bunun geçerli olduğu öne sürülüyor.
fork
adresine yakın bir şey almak istiyorsanız, işlev göstergesini almayan ve fork
gibi iki kez döndüren sys_clone
numaralı telefonu aramak isteyebilirsiniz.
Kod dalışına gittim çünkü hala rahat hissetmedim, ama haklı gözüküyor. Ne bulduğum, '' clone'' sys_clone' etrafında çok ince bir sarıcı olduğunu, sadece yeni yığınında 'fn' olarak adlandırmak için gerekli olanı yapıyor. 'sys_clone' aslında 'fork' gibi döner, ancak doğrudan çağrılmaz, çünkü bu imza mimariye göre farklılık gösterir. 'fork' aslında oldukça yağlıdır: geri çağrıları yürütür, yanlış temizleme yapar, ancak temelde sadece SIGCHLD kullanır. (Sanırım 'fork'-extras'ı taklit etmek için yapabileceğim bir şey yok.) –