fork question
John E. Davis
davis at pacific.mps.ohio-state.edu
Thu Feb 7 06:24:53 AEST 1991
Hi,
I have a program, called `sline' with the front end:
main()
{
char *position,*init_status,*exit_status,*terminal;
int matched;
int child_pid, parent_pid, parent;
FILE *fpstatus;
parent_pid = getppid();
/* we create an identical process to do the work and exit the parent */
/* now fork off a child to do all of the work */
switch (child_pid = fork())
{
case 0:
/* this is the child; let it go on */
break;
case -1:
/* oops... something wrong! */
perror("sline");
exit(1);
break;
default:
/* the parent... may exit after sending the pid of the child */
printf("%d\n",child_pid);
exit(0);
}
[....]
As you can see, the program forks with the parent exiting returning the pid of
the child process. This is precisely what happens when I run it at the unix
command line. Now in my .login I have the line:
.
.
set slinepid = `sline`
.
.
which sets the variable `slinepid' to the pid of the child. This variable
gets set but my .login gets hung up here-- ie. it does not continue beyond
this point; I have to ^C to kill it.
What fundamental point am I missing here? It seems to me that the .login is
waiting for the child to exit as well.
Thanks,
--
John
bitnet: davis at ohstpy
internet: davis at pacific.mps.ohio-state.edu
More information about the Comp.unix.programmer
mailing list