Re: Reading From A Pipe
- From: José Alburquerque <jaalburquerque cox net>
- To: pub <pub inbox hughes net>
- Cc: gtkmm-list gnome org
- Subject: Re: Reading From A Pipe
- Date: Tue, 11 May 2010 16:20:40 -0400
On Tue, 2010-05-11 at 16:19 -0400, José Alburquerque wrote:
> On Tue, 2010-05-11 at 19:37 +0000, pub wrote:
> > int pipefd2[2]; /* Read pipe from child */
> >
> > Glib::RefPtr<Glib::IOChannel> readChannel;
> >
> >
> > //Instantiate
> > Playback playback;
> >
> > // Connect the signal handler
> > Glib::signal_io().connect(sigc::mem_fun(playback,
> > &Playback::readpipe), pipefd2[r], Glib::IO_IN);
> >
> > // Create a writeChannel from the file descriptor
> > writeChannel = Glib::IOChannel::create_from_fd(pipefd1[w]);
> >
> > // Create a readChannel from the file descriptor
> > readChannel = Glib::IOChannel::create_from_fd(pipefd2[r]);
> >
> > app.run(playback);
> >
> >
> > // Read From Pipe
> > bool Playback::readpipe(Glib::IOCondition read_condition)
> > {
> > static int linecount; // Total lines expected
> > static int count; // Count of lines received
> >
> >
> >
> > if ((read_condition & Glib::IO_IN) == 0)
> > {
> > std::cerr << "Exxx: Invalid read response" << std::endl;
> > }
> > else
> > {
> > #ifdef GLIBMM_EXCEPTIONS_ENABLED
> > readChannel->read_line(readbuffer);
> > #else
> > std::auto_ptr<Glib::Error> ex;
> > readChannel->read_line(readbuffer, ex);
> > if(ex.get())
> > std::cerr << "Exxx: " << ex->what() << std::endl;
> > #endif //GLIBMM_EXCEPTIONS_ENABLED
> >
> > /* Append message read from pipe to textbuffer */
> > m_msg->insert(m_msg->end(), readbuffer);
> > }
> > return true;
> > } //End of readpipe()
>
> My suggestion would be to try running the code through a debugger. I
> find this a lot easier than guessing at what is happening (unless
> something is blatantly clear from a quick look at the code). Perhaps
> others can more quickly see the problem than I can right now.
scratch "right now".
--
José
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]