linux-c-programming.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Karol Banczyk <car-los@tlen.pl>
To: linux-c-programming@vger.kernel.org
Subject: Re: ophan child process to take standard input
Date: Mon, 05 Sep 2005 19:42:11 +0200	[thread overview]
Message-ID: <dfi01j$opt$1@sea.gmane.org> (raw)
In-Reply-To: <6a00c8d505090422337beed9a0@mail.gmail.com>

Steve Graegert napisa³(a):
> On 9/4/05, Karol Banczyk <car-los@tlen.pl> wrote:
> 
>>Hello,
>>       I'm solving an exercise from my school. Not to go into details - the
>>task is to create a initiating process which in turn starts three new
>>processes  and then finishes its work. The three processes are to
>>communicate with pipes. There's no problem till this stage. But there's
>>the catch. The first of the three processes has to get its input from
>>the standard input and this works only as long as the parent
>>(initiating) process is alive. When the parent finishes the standard
>>input goes back to bash and the orphaned processes are adopted by the
>>init process having no access to stdin.
> 
> 
> This is what I would expect.  As long as the parent is running child
> processes are attached to the process group's controlling terminal and
> will be detached automatically when the parent is terminated.
> 
> Normally, the parent should wait (waitpid) for its childs to prevent
> them of becoming orphans.  Are you waiting for them?
> 
> It would be easier to help if you would let us know what the exercise is.  
> 
> 
> Regards
> 
> 	\Steve


Hello again
Thanks for reply, Steve,

So - let's describe the whole exercise. I've done almost everything 
except the "finish parent" part.

We have to: create an initializing process that would create 3 processes:
1. first one to read from stdin and send read lines to a named pipe,
2. second to read from the pipe from proc 1, display the lines and to 
write the to another pipe numbers of characters from the read lines,
3. third one to read from the pipe form proc 2 and to display the numbers.

No there is a restriction that the initializing process should just 
"init the processes and finish immediately". The rest of the task is 
about using signals to suspend/continue the pipe communication or the 
finish all the processes. It's rather unimportant for my problem apart 
from the fact, that the three processes have to communicate with each 
other using signal (which makes it even harder if you really have to 
kill the parent process).


My solution fulfills all the requirements of the exercise except for the 
termination of the initilizing process. As you said, Steve, I do wait 
for all the three child processes in parent - interpreting the exercise 
to my convenience that "fihishing" is a way of "being suspended" or 
"doing nothing".

I just don't know if the creator of the task wants me to do some 
extraordinary magic with process groups and task controlling processes 
or is it just a bug. I can't find a way to give an orphan process access 
to a terminal which has no realtion with it (after a orphaned process is 
adopted by init). Is it anyway a good programming style to create 
orphaned processes??

Or maybe there is a way to create process that are not child processes? 
I currently create child processes using the fork function..

I hope my description has enough details now. Thanks


KB

-
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2005-09-05 17:42 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-09-04 18:49 ophan child process to take standard input Karol Banczyk
2005-09-05  5:33 ` Steve Graegert
2005-09-05 17:42   ` Karol Banczyk [this message]
2005-09-05 18:01     ` 386 demand paged pure executable Nanakos Chrysostomos

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='dfi01j$opt$1@sea.gmane.org' \
    --to=car-los@tlen.pl \
    --cc=linux-c-programming@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).