Re: fork() and exec()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Die, 2012-02-07 at 00:38 +0530, Vijay Chauhan wrote:
> Hi List,
> 
> I am learning Linux and trying to understand exec and fork function.
> execl says that it overlays the running address space. What does it mean?
> 
> I created the following program and used top command with
> intentionally wrong arguments:
> 
> #include<stdio.h>
> #include<unistd.h>
> #include<sys/types.h>
> #include<stdlib.h>
> 
> int main(){
> 	int a = -1;
> 	if(fork()==0){
> 		printf("Inside child\n");
> 		printf("child pid=%d, parentid=%d\n", getpid(), getppid());
> 		execl("/usr/bin/top", "/usr/bin/top", ">/dev/null" ,(char*)0 );

You get here only if the execl() as such fails.

> 		scanf("inside child provide a %d", &a);

You should check the return value here if you actually got a matching
parameter.
scanf() is actually a function to be avoided.

> 		printf("Inside child a=%d\n", a);
> 		exit(1);
> 	} else {
> 		printf("Inside parent, going to wait\n");
> 		printf("my pid=%d, parentid=%d\n", getpid(), getppid());
> 		scanf("input parent %d\n", &a);

You should check the return value here if you actually got a matching
parameter.
scanf() is actually a function to be avoided.

> 		wait(NULL);

You should check the return value here to know why "wait()" returns.

> 		printf("Wait over\n");
> 		printf("Inside parent a=%d\n", a);
> 	}
> 	return 0;
> }

	Bernd
-- 
Bernd Petrovitsch                  Email : bernd@xxxxxxxxxxxxxxxxxxx
                     LUGA : http://www.luga.at


_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux