pause Sorunları
Önceki Sinyalin Beklenmesi Sonraki
pause Sorunları
pause basitleştirmesi, yazılımın sihirli bir şekilde çökmesine sebep olan bir sürü zamanlama hatasını gizleyebilir.
Eğer herşeyi yazılımınız yapıyorsa, yani kendi sinyal eylemcilerini kullanıyor ve yazılım pause çağırmaktan başka birşey yapmıyorsa pause kullanmak güvenilirdir. Her sinyal alınışında sinyal eylemci bir sonraki işi yapar ve döner, böylece yazılımın ana döngüsü tekrar bir pause çağrısı yapabilir.
Birden fazla sinyalin işlenmesi için pause kullanarak beklemek ve sonra çalışmayı sürdürmek mümkün olmayabilir. Sinyal eylemci çalışmaya başladığında bir değişken ile bunu belirliyorsanız pause kullanmak artık güvenilir olmaz; örnek:
/* usr_interrupt'a sinyal eylemci değer atıyor.  */
if (!usr_interrupt)
  pause ();

/* Sinyal geldikten sonra yapılacaklar.  */
…
Bu bir yazılım hatasıdır: sinyal, usr_interrupt'a bakıldıktan sonra ve pause çağrılmadan önce gelmelidir. Eğer böyle bir sinyal gelmezse, süreç bu kod parçasını bir kez daha asla çalıştırmayacaktır.
pause kullanmak yerine döngü içinde beklemeyi sleep kullanarak sınırlayabilirsiniz. sleep hakkında daha ayrıntılı bilgiyi Uyku bölümünde bulabilirsiniz. Bu durumda kod şöyle olurdu:
/* usr_interrupt'a sinyal eylemci değer atıyor.  */
while (!usr_interrupt)
  sleep (1);

/* Sinyal geldikten sonra yapılacaklar.  */
…
Bazı amaçlar için bu yeterli olur. Ama biraz daha karmaşık olmakla beraber belli bir sinyal eylemcisinin çalıştırılmasını sigsuspend kullanarak sağlayabilirsiniz.
Önceki Üst Ana Başlık Sonraki
pause Kullanımı Başlangıç sigsuspend Kullanımı
Bir Linux Kitaplığı Sayfası