openlog
Önceki Syslog İletilerinin Teslim Edilmesi Sonraki
openlog
Bu böümdeki semboller syslog.h dosyasında bildirilmiştir.
void openlog
(const char *kimlik,
 int         seçenek,
 int         oluşum)
işlev
openlog işlevi iletileri teslim etmek için Syslog'a bir bağlantı açar ya da bir bağlantıyı yeniden açar.
kimlik ileride yapılacak syslog çağrılarında iletinin başına eklenecek keyfi bir kimliklendirme dizgesidir. Bu iletinin kaynağını belirtmek için düşünülmüştür ve teamülen iletileri teslim edecek yazılımın ismidir.
Eğer kimlik bir boş gösterici ise ya da openlog çağrısı yapılmazsa, ön tanımlı kimliklendirme dizgesi argv[0]'dan alınan yazılım ismi olacaktır.
kimlik dizge göstericisinin Syslog yordamları tarafından dahili olarak saklanacağını lütfen hatırlayın. kimlik ile gösterilen belleği serbest bırakmamalısınız. Etki alanından çıkmak değişkenin yaşamının sonu demek olduğundan dizgeyi bir özdevinimli değişkende saklamak ayrıca tehlikelidir de. kimlik dizgesini değiştirmek isterseniz openlog işlevini tekrar çağırmalısınız; kimlik ile gösterilen dizgeye yazma işlemi evresel değildir.
Syslog yordamlarının kimlik başvurusunu bırakmasını sağlayabilir ve closelog çağrısı ile öntanımlı dizgeye (argv[0]'dan alınan yazılım ismi) geri dönebilirsiniz: closelog.
Kodu, yüklenebilen bir paylaşımlı kütüphane (örn, bir PAM modülü) için yazıyorsanız ve openlog kullanıyorsanız, kütüphaneyi yüklenmemiş duruma getirmeden önce bir noktada closelog çağrısı yapmalısınız. Bir örnek:
#include <syslog.h>

void
shared_library_function (void)
{
  openlog ("mylibrary", option, priority);

  syslog (LOG_INFO, "shared library has been invoked");

  closelog ();
}
closelog çağrılmaksızın kütüphane yüklenmemiş duruma getirilip "mylibrary" dizgesini içeren bellek anlamsız hale getirilirse, kütüphaneyi kullanan yazılım tarafından ileride yapılacak bir syslog çağrısı bir çökmeye sebep olabilir. Bu BSD syslog arayüzünün bir sınırlamasıdır.
openlog işlevi seçenek değerine bağlı olarak /dev/log soketini açabilir de açmayabilir de. Eğer açması gerekiyorsa, onu açmayı dener ve bir datagram soketi olarak ona bağlanır. Soket, "Close on Exec" özniteliğine sahiptir, bu bakımdan eğer süreç bir exec çağrısı yaparsa çekirdek onu kapatacaktır.
openlog kullanmak zorunda değilsiniz. Eğer openlog çağrısı yapmaksızın bir syslog çağrısı yaprsanız, kimlik ve options için öntanımlı değerler kullanılarak bağlantı anında açılır.
options bir bit dizgesidir. Bitler aşağıdaki tek bitlik maskelerle tanımlanmıştır:
LOG_PERROR
Bit varsa, openlog bağlantıyı öyle ayarlar ki, bu bağlantı üzerinden yapılan herhangi bir syslog çağrısı iletiyi Syslog'a teslim ederken ek olarak iletiyi sürecin standart hata akımına yazar. Aksi takdirde, syslog iletiyi standart hataya yazmaz.
LOG_CONS
Bit varsa, openlog bağlantıyı öyle ayarlar ki, bu bağlantı üzerinden yapılan herhangi bir syslog çağrısında bir ileti Syslog'a teslim edilemezse ileti sistem konsoluna yazılır. Aksi takdirde, syslog çağrısı sistem konsoluna yazmaz (ama şüphesiz kendi konsoluna yazabilir).
LOG_PID
Bit varsa, openlog bağlantıyı öyle ayarlar ki, bu bağlantı üzerinden yapılan herhangi bir syslog çağrısında, çağrıldığı sürecin süreç kimliğini (PID) iletiye yerleştirir. Aksi takdirde, openlog PID'i yerleştirmez.
LOG_NDELAY
Bit varsa, openlog, /dev/log soketini açar ve bağlanır. Aksi tadirde, ileride yapılacak bir syslog çağrısı soketi açmalı ve bağlanmalıdır.
Taşınabilirlik Bilgisi
Erken dönemdeki sistemlerde, bu bit tamamen ters çalışırdı.
LOG_ODELAY
Bu bit hiçbir şey yapmaz. Sadece geriye uyumluluk adına vardır.
options içindeki diğer bitler birse sonuç belirsizdir.
oluşum bu bağlantı için öntanımlı oluşum kodudur. Bu bağlantı üzerinden öntanımlı oluşum belirten bir syslog çağrısı, iletinin bu oluşumla ilişkilendirilmesine sebep olur. Olası değerler için syslog işlevinin açıklamasına bakın. Belirtilen bir sıfır değeri öntanımlı olan LOG_USER'ı öntanımlı oluşum yapar.
openlog çağrısı yaptığınızda, eğer bir Syslog bağlantısı zaten açıksa, openlog bağlantıyı "yeniden" açar. Yeniden açma öntanımlı oluşum kodu için sıfır belirtilmesi dışında açma gibidir, öntanımlı kod basitçe değişmeden kalır ve LOG_NDELAY belirtilmişse, soket zaten açık ve bağlı olduğundan openlog onu olduğu gibi bırakır.
Önceki Üst Ana Başlık Sonraki
Syslog İletilerinin Teslim Edilmesi Başlangıç syslog, vsyslog
Bir Linux Kitaplığı Sayfası