Bu, genel olarak sistem çağrıları ile ilgili olduğunu düşündüğünden, yalnızca soketler üzerine gönderilmediğinden, Is a successful send() "atomic"? için bir sonraki soru.Sistem çağrıları ne zaman ve nasıl kesilir?
Hangi sistem çağrıları kesintiye uğrayabilir ve ne zaman kesintiye uğruyor? SA_RESTART hakkında bilgi aldım, ama neler olduğunu tam olarak anlamadım. Ben SA_RESTART olmadan bir sistem çağrısı yaparsanız
, çağrı kesmeleri her türlü ile kesilebilir (örn kullanıcı girişi) çağrımı iptal ve bir şeyler yapmak başvurumu endişe, ancak OS gerektirmeyen Başka? Yoksa sadece sürecimle doğrudan ilgili olan sinyaller tarafından kesiliyor mu (CTRL + C, soket kapalı, ...)?
SA_RESTART değerini ayarlarken, bir gönderenin() veya başka bir "yavaş" syscall'ın semantiği nedir? Tüm verilerim iletilene veya yuvaya inene kadar her zaman engellenecek mi yoksa send() 'ın parametresindeki sayımdan daha küçük bir sayı ile geri dönecek mi?
Yeniden başlatma nerede uygulanmaktadır? İşletim sistemi, aramanın herhangi bir kesinti halinde yeniden başlatılmasını istediğimi veya işlemime gönderilen ve daha sonra kütüphane koduyla gönderilen bir sinyalin olduğunu biliyor mu? Veya bunu kendim yapmak zorundayım mı? aramayı bir süre döngüsüne sarın ve gerektiği kadar tekrar deneyin.
Bu yalnızca sürecime gönderilen sinyaller anlamına gelir, değil mi? Bir şekilde kesilmemle uğraşan çekirdeğin (tuşa basma, fare hareketi, zamanlayıcı kesmesi, ...) herhangi bir şekilde kesilmesinin, çağrımın geri dönmesine ve gönderilecek sinyale neden olacağını varsaydım. Sistem çağrısı sırasında bir içerik anahtarı, zamanın yanı sıra sürecimi hiçbir şekilde etkilememelidir, değil mi? – lxgr
@lxgr, bu doğru, içerik anahtarlama sistem çağrılarını iptal etmiyor. –