2011-08-21 40 views
5

open() api çağrısı kullanarak bir mod açmaya çalışıyorum, ancak aşağıdaki kod çalışmıyor! Dosyaya yazacak bir şey yazmıyor! İşte benim kodudur:Dosya açma modunda açma: open() API kullanarak

enter image description here

+0

Çalışması gerektiği gibi görünüyor. –

+0

Ayrıca, programınızın strace altında çalıştığı çıktı nedir? Bu nasıl başarısız olur? – bdonlan

+1

'n'' 'yaz'dan döndürülen değerin ne olduğunu kontrol ettiniz mi? yazdırmak için printf kullanın ve sonra kontrol edin. Ayrıca, dosyaya yazdıktan sonra dosyayı kapatın. –

cevap

14

O_APPEND başına bir mod değildir; bu bir bayrak. O_RDONLY'un değeri 0 olduğundan, dosyayı salt okunur, ancak ekleme yapmak için çalışıyorsunuzdur, bu saçmalıktır. O_WRONLY|O_APPEND veya O_RDWR|O_APPEND kullanın.

+0

Kesin konuşma, 'O_RDONLY', "O_RDWR" veya "O_WRONLY" olmaksızın açık olarak kullanıldığında tanımlanamayan bir davranıştır.Özel Linux durumunda, 'O_RDONLY = 0 ', bu yüzden bu şekilde ortaya çıkmak için olur. – bdonlan

+0

tamam! ben bilmiyordum! Teşekkürler! –

+0

Bildiğim kadarıyla,' O_RDONLY 'tüm tarihsel uygulamalarda 0'dır. –