Steve Graegert napisaĆ(a):
On 9/4/05, Karol Banczyk <[EMAIL PROTECTED]> 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 [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html