সংক্ষিপ্ত বিবরণ
Windows-এ অ্যানোনিমাস পাইপ হল অনির্দেশী (unidirectional) কমিউনিকেশন চ্যানেল যা পেরেন্ট-চাইল্ড প্রসেসের মধ্যে ডেটা বিনিময়ে। Unix পাইপের মতোই কিন্তু উইন্ডোজ API ভিন্ন।
মূল ফাংশন ও স্ট্রাকচার
CreatePipe()— পাইপ তৈরি (রিড/রাইট হ্যান্ডেল, সিকিউরিটি অ্যাট্রিবিউট, সাইজ)ReadFile()/WriteFile()— পাইপ পড়া/লেখাSTARTUPINFO— চাইল্ড প্রসেসের স্ট্যান্ডার্ড হ্যান্ডেল রিডাইরেক্ট করার জন্যSetHandleInformation()— হ্যান্ডেল ইনহেরিট্যান্স নিয়ন্ত্রণ
পেরেন্ট প্রসেস কোড
HANDLE ReadHandle, WriteHandle;
SECURITY_ATTRIBUTES sa = {sizeof(sa), NULL, TRUE}; // ইনহেরিটেবল
CreatePipe(&ReadHandle, &WriteHandle, &sa, 0);
STARTUPINFO si; GetStartupInfo(&si);
si.hStdInput = ReadHandle; // চাইল্ড পাইপ থেকে পড়বে
si.dwFlags = STARTF_USESTDHANDLES;
SetHandleInformation(WriteHandle, HANDLE_FLAG_INHERIT, 0); // রাইট এন্ড ব্লক
CreateProcess(NULL, "child.exe", NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);
CloseHandle(ReadHandle);
WriteFile(WriteHandle, message, len, &written, NULL);
CloseHandle(WriteHandle);
WaitForSingleObject(pi.hProcess, INFINITE);
চাইল্ড প্রসেস কোড
HANDLE h = GetStdHandle(STD_INPUT_HANDLE);
ReadFile(h, buffer, size, &read, NULL);
printf("Child read: %s", buffer);
নোট
- উইন্ডোজে হ্যান্ডেল ইনহেরিট্যান্স এক্সপ্লিসিট 해야 합니다
- পাইপ হাফ-ডুপ্লেক্স (একদিকনির্দেশী)