2013-03-16 23 views
12

İşlemim birkaç kez çatal atıyor ve her çocuk çalıştırıldığında - başka bir program çalıştırmasını istiyorum.Linux'ta dosya açtığımda O_CLOEXEC'i ne zaman kullanmalıyım?

Ana işlemde, open() syscall ile bir dosya tanıtıcı açıyorum.

Bir bayrağı O_CLOEXEC vermek doğru olur, bu yüzden exec() ile çalıştırdığım yeni programda fd kaynağı olmaz mı?

cevap

12

Evet, programa ihtiyacınız olmadıkça, bu dosya tanıtıcısına erişmeye çalışıyorsunuz. Ayrıca, exec çağrılmadan önce dosya tanıtıcısını çocuk işleminde manüel olarak kapatabilirsiniz, ancak bu daha fazla hataya yatkındır.

+1

Eski (ama hataya eğilimli) bir uygulama için (int = 3; i <256; i ++) close (i); '' exec '' den hemen önce, sadece stdin, stdout, stderr ... . –

İlgili konular