Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

Windows अनाम पाइप (Anonymous Pipe)

Windows अनाम पाइप वास्तव में साधारण पाइप हैं, और वे अपने UNIX समकक्षों की तरह व्यवहार करते हैं: वे एकदिशात्मक हैं और संचार करने वाली प्रक्रियाओं के बीच पैरेंट-चाइल्ड संबंध रखते हैं। पढ़ने और लिखने के लिए सामान्य `ReadFile()` और `WriteFile()` फंक्शन का उपयोग किया जाता है। Windows API पाइप बनाने के लिए `CreatePipe()` फंक्शन का उपयोग करता है जिसे चार पैरामीटर पास किए जाते हैं।

Windows के लिए प्रोग्रामर को यह निर्दिष्ट करना आवश्यक है कि चाइल्ड प्रक्रिया कौन से गुण विरासत में लेगी, UNIX के विपरीत। यह `SECURITY_ATTRIBUTES` संरचना को आरंभ करके हैंडल्स को विरासत में लेने की अनुमति देकर और फिर चाइल्ड प्रक्रिया के स्टैंडर्ड इनपुट/आउटपुट को पाइप के रीड/राइट हैंडल पर रीडायरेक्ट करके पूरा किया जाता है।

उदाहरण: पैरेंट प्रक्रिया

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

#define BUFFER_SIZE 25

int main(VOID) {
    HANDLE ReadHandle, WriteHandle;
    STARTUPINFO si;
    PROCESS_INFORMATION pi;
    char message[BUFFER_SIZE] = "Greetings";
    DWORD written;
    SECURITY_ATTRIBUTES sa = {sizeof(SECURITY_ATTRIBUTES), NULL, TRUE};
    ZeroMemory(&pi, sizeof(pi));
    if(!CreatePipe(&ReadHandle, &WriteHandle, &sa, 0)) {
        fprintf(stderr, "Create Pipe Failed");
        return 1;
    }
    GetStartupInfo(&si);
    si.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    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);
    if(!WriteFile(WriteHandle, message, BUFFER_SIZE, &written, NULL))
        fprintf(stderr, "Error writing to pipe.");
    CloseHandle(WriteHandle);
    WaitForSingleObject(pi.hProcess, INFINITE);
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
    return 0;
}

चाइल्ड प्रक्रिया

#include <stdio.h>
#include <windows.h>

#define BUFFER_SIZE 25

int main(VOID) {
    HANDLE ReadHandle;
    CHAR buffer[BUFFER_SIZE];
    DWORD read;
    ReadHandle = GetStdHandle(STD_INPUT_HANDLE);
    if(ReadFile(ReadHandle, buffer, BUFFER_SIZE, &read, NULL))
        printf("child read %s", buffer);
    else
        fprintf(stderr, "Error reading from pipe");
    return 0;
}
  1. Windows C:/Windows/regedit.exe नहीं ढूंढ सका - त्रुटि समाधान Windows C:/Windows/regedit.exe नहीं ढूंढ सका - त्रुटि समाधान

    इस पोस्ट में, हम एक केस परिदृश्य पर चर्चा करते हैं और फिर त्रुटि संदेश - Windows cannot find C:\Windows\regedit.exe का समाधान प्रदान करते हैं जो आपको अपने Windows 10 डिवाइस को शुरू करते समय या रजिस्ट्री संपादक खोलने का प्रयास करते समय प्राप्त हो सकता है। Windows C:\Windows\regedit.exe नहीं ढूंढ सका

  1. विंडोज 11 SE की खोज करें: माइक्रोसॉफ्ट का क्लासरूम-रेडी OS विंडोज 11 SE की खोज करें: माइक्रोसॉफ्ट का क्लासरूम-रेडी OS

    जबकि क्रोमबुक और क्रोम ऑपरेटिंग सिस्टम ने ज्यादातर शैक्षिक बाजार पर कब्जा कर रखा है, माइक्रोसॉफ्ट कुछ समय से इसमें प्रवेश करने और खेल के मैदान को समतल करने का प्रयास कर रहा है। विंडोज 11 SE के साथ, यह ठीक यही हासिल करना चाहता है। इस ऑपरेटिंग सिस्टम को K-8 क्लासरूम को ध्यान में रखकर बनाया गया है। यह

  1. Windows 10 में अपने बच्चे के अकाउंट को प्रबंधित करें: पैरेंटल कंट्रोल और सेटिंग्स Windows 10 में अपने बच्चे के अकाउंट को प्रबंधित करें: पैरेंटल कंट्रोल और सेटिंग्स

    पहले, हमने Windows 10 में विभिन्न प्रकार के अकाउंट बनाने के लिए उपलब्ध तरीकों के बारे में बात की है और हमने यह भी दिखाया है कि इसे आपके कंप्यूटर में कैसे एक्सेस किया जा सकता है लेकिन हम वास्तव में इस विवरण में नहीं गए कि आप अपने बच्चे के अकाउंट को कैसे प्रबंधित कर सकते हैं। क्या आप जानते हैं कि आप व