hey all !

I am a little confused about process creation and termination.
I think I'll just provide example code to stress my question.

------------------------------------------
int main(){

int child_pid;

 if( (child_pid = fork()) == -1 )
   perror("cannot fork\n");

 else if(child_pid){    /* parent */
        if(wait(NULL) == -1)
                perror("can't wait\n");
        printf("parent\n");
 }

 else{                  /* child */

        printf("child process\n");      
        /* exit(0); */
 }

}
----------------------------------------------------
I guess my questions were:
1. why doesn't " the exit(0) statement ( that is commented ) "
make any difference ?

If I understand it right.  A process will terminate by the call
to exit(status) system call.  And status will be
passed to the parent via the wait() syscall with an argument that is not
NULL. which leads to my other question

2.can a newly created process( in my program is the child )
be terminated if there is no more instruction to execute which in my case
the else block statement only has one printf statement ?
eg: else{ printf("foo\n"); } 

3.Does it also imply that a newly created process can be terminated
WITHOUT calling exit() or catching some other "terminating" signals
from the kernel ?

thanks folks

--truly deeply curious  
        Andy ------




Reply via email to