আমি মূলত নিম্নলিখিত কোড আছে:
int fileWrite(int file, void * pBuffer, size_t size)
{
size_t bytesWritten = (size_t)write( file, pBuffer, size ) ;
if (bytesWritten != size)
{
return -1;
}
return 0;
}
এটি যদি আকারটি 1 গিগাবাইট হয় তবে এটি কাজ করে, তবে যখন আকারটি 2 গিগাবাইট হয় তখন এটি 4K বাইট ধারাবাহিকভাবে ছেড়ে যায়। আমি একটি লুপে লিখিত মোড়ানো এবং বাফারটিকে সরিয়ে দিয়ে এটি ঠিক করতে পারি তবে কেন এটি সর্বদা ব্যর্থ হয় তা সম্পর্কে আমি আগ্রহী।
উদাহরণস্বরূপ যদি আকার 2147483648 হয়, কেবল লেখ লিখুন 2147479552, 4096 অলিখিত লিখে রেখে। কেন এটি হবে এবং সর্বদা একটি লুপে লেখার মোড়কটি সঠিক?
write
একসাথে কতটা ডেটা গ্রাহ্য হবে তার নিয়মগুলি নির্ভর করে কী ধরণের ডেটা সিঙ্কের উপর নির্ভর করে file
(যেমন "নিয়মিত" ফাইল, পাইপ, স্ট্রিম সকেট, ডেটাগ্রাম সকেট, ...)। আপনি আরো নির্দিষ্ট হতে পারে?
write
একবারে পুরো ফাইলটি চেষ্টা করছেন ? সাধারণ পদ্ধতির মধ্যে হ'ল আপনি সবকিছু না লিখে অবধি একসময় ডেটা একটি বাফার-সাইজ স্ট্রিম করা।
write()
এটি সমস্ত লিখতে হবে না (যা ছোট বাফারদের পক্ষেও যায়)
SSIZE_MAX
সীমাবদ্ধতা নির্বিশেষে আপনার প্রয়োজন । write()
বৈশিষ্ট এটি সম্পূর্ণ বাফার লিখতে কোন বাধ্যবাধকতা অধীনে, এমনকি যদি এটা প্রায় সবসময় আছে বলেছেন। প্রশ্নে লুপ-কম কোডটি একটি বাগ।