पाइप टूटी, फीफो फ़ाइल

वोट
45

मैं फीफो फ़ाइल का उपयोग करने के लिए एक कार्यक्रम की कोशिश कर रहा हूँ, लेकिन मैं आउटपुट के रूप में टूटी पाइप हो रही है। यहाँ कोड है -

#include<iostream>
#include<stdlib.h>
#include<fcntl.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<sys/stat.h>
#include<sys/types.h>
using namespace std;
int main(int argc,char *argv[])
{
int fd; //stores file descriptor returnd from open
char buf[256];
if(argc<2||argc>3)
{
    cout<<Invalid Arguments;
    return 1;
}

mkfifo(argv[1],0777);
if(argc==3)
{   
    cout<<Writer\n;
    if((fd=open(argv[1],O_WRONLY))==-1)
    {
        perror(open);
        return 1;
    }
    write(fd,argv[2],strlen(argv[2]));
    sleep(10);
}
else
{   cout<<Reader\n;
    if((fd=open(argv[1],O_RDONLY|O_NONBLOCK))==-1)
    {       
        perror(open);
        return 1;
    }

    read(fd,&buf,sizeof(buf));
    cout<<buf;

}
 close(fd);
 return 1;
 }

आउटपुट: नीचे Fifo फ़ाइल का नाम है और हैलो सामग्री है।

./a.out fifo hello &

Writer

./a.out fifo
Reader

[1]+  Broken pipe  

मैं आउटपुट के रूप में मिलना चाहिए हैलो। किसी को भी मदद कर सकते हैं?

16/03/2016 को 17:02
उपयोगकर्ता
अन्य भाषाओं में...                            


2 जवाब

वोट
1

आपका लिखने होता है इससे पहले कि आप अपने पाठक शुरू करते हैं। जब आप एक पाइप को लिखने और यह कोई पाठक है आप SIGPIPE मिलता है।

इस विशेष डिजाइन में, आप की जरूरत है संभाल पुन: प्रयास करें तर्क के साथ SIGPIPE।

16/03/2016 को 17:13
का स्रोत उपयोगकर्ता

वोट
1

त्रुटि आप प्राप्त है EPIPEऔर अगर आप एक को पढ़ने writeके मैनुअल आपको लगता है कि आप प्राप्त देखेंगे EPIPEजब

fd एक पाइप या सॉकेट जिसका पढ़ने अंत बंद कर दिया है से जुड़ा है।

क्योंकि आप गैर अवरुद्ध मोड में पाइप, जिसका अर्थ है के पढ़ने अंत खोलने आपको यह त्रुटि प्राप्त readकॉल ब्लॉक और डेटा प्राप्त किए जाने के लिए इंतजार नहीं कर पाएंगे, इसके बजाय जब readकॉल तुरंत लौट आप पाइप को बंद करने और प्रक्रिया से बाहर निकलें।

इसका मतलब है कि जब आप लेखक चलाने कोई डेटा आप लिखते हैं के लिए इंतज़ार कर एक ही है और आप त्रुटि मिलती है।

तो यह पाइप के लिए लिखते हैं, और सबसे पहले लेखक: आप पढ़ने और विपरीत क्रम में लेखक चलाने की आवश्यकता तो पाठक पाइप से डेटा पढ़ने की।

16/03/2016 को 17:14
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more