Có an toàn chỉ bằng fprintf không? The glibc manual có vẻ như nó là, nhưng ứng dụng của tôi, mà viết vào một tập tin bằng cách sử dụng một cuộc gọi duy nhất để fprintf() có vẻ là intermingling viết một phần từ các quá trình khác nhau.Có phải thực hiện glibc của fprintf() thread-safe không?
chỉnh sửa: Để làm rõ, chương trình được đề cập là plugin lighttpd và máy chủ đang chạy với nhiều chuỗi công việc.
Nhìn vào tệp, một số ghi được xen kẽ.
chỉnh sửa 2: Có vẻ như vấn đề tôi nhìn thấy có thể là do "đề người lao động" lighttpd của quy trình riêng biệt thực sự là: http://redmine.lighttpd.net/wiki/lighttpd/Docs:MultiProcessor
vấn đề
Bằng cách chạy 2 hoặc nhiều hơn các quá trình trên cùng một ổ cắm, bạn sẽ có đồng thời tốt hơn , nhưng sẽ có một vài hạn chế mà bạn phải biết của:
- mod_accesslog có thể tạo nhật ký truy cập bị hỏng, vì cùng một tệp được mở hai lần và KHÔNG được đồng bộ hóa.
- mod_status sẽ có n các bộ đếm riêng biệt, một bộ cho mỗi quy trình .
- mod_rrdtool sẽ không thành công vì nhận được cùng một dấu thời gian hai lần.
- mod_uploadprogress sẽ không hiển thị trạng thái chính xác.
Bạn có đang quan sát điều này trong tệp mà bạn viết bằng 'fprintf' hoặc bạn đang quan sát điều này trong luồng' stdout' và 'stderr'? –