signal ve sigaction işlevlerini aynı yazılım içinde kullanmak mümkündür. Ancak tuhaf bir yolla bu iki işlev birbirinden etkilenir, bu nedenle bu ikisini aynı yazılım içinde kullanıyorsanız dikkatli olmanız gerekir.
sigaction işlevi signal işlevinden daha fazla bilgi içerir. Yani, signal işlevinin dönüş değeri sigaction işlevinin döndürdüğünden daha az bilgi döndürür. Diğer taraftan, bir eylemi kaydedip daha sonra etkinleştirmek için signal işlevini kullanırsanız, tekrar kurulan eylemci sigaction tarafından yeniden kurulan eylemci kadar düzgün oluşmayacaktır.
Sonuç olarak, sorunlardan kaçınmak için, yazılımınızda her yerde sigaction kullanmışsanız, bir eylemi kaydetmek ve yeniden oluşturmak için yine sigaction işlevini kullanın. Hatta, sigaction daha genel olduğundan, bir eylem hangi işlev ile kurulmuş olursa olsun, bir eylemi orjinal haliyle saklamak ve yeniden oluşturmak için daima sigaction işlevini kullanın.
Bazı sistemlerde, eğer bir eylemi signal ile oluşturup daha sonra sigaction ile incelerseniz eylemci işlevin adresinin signal işlevinin argümanı olarak belirtilen adresle aynı olmadığını görebilirsiniz. Hatta signal işlevinin bir argümanı olarak kullanmak için bile uygun olmayabilir. Ama sigaction işlevine bir argüman olarak kullanabilirsiniz. Bu sorun GNU sistemlerinde asla görülmez.
Bu durumda, en iyisi bir yazılım içinde sürekli olarak bu mekanizmalardan sadece birini kullanmaktır.
| Taşınabilirlik Bilgisi |
---|
sigaction işlevi POSIX.1'in parçası olduğu halde, signal işlevi bir ISO C oluşumudur. Yazılımınızın POSIX olmayan sistemlere taşınabilirliği bakımından kaygınız varsa, sigaction yerine signal işlevini tercih etmelisiniz. |