Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Objective: In this assignment, you will be writing a program that performs the f

ID: 3884838 • Letter: O

Question

Objective:

In this assignment, you will be writing a program that performs the fork() and exec() system calls. You will demonstrate that you understand how to properly interpret the output of the fork() system call as well as the proper place to use the exec() system call.

Details:

Your program will call the fork() system call at the very start. The parent process will display a message indicating it has started and will then wait for a specific child process ID to complete. Once the child process has completed, the parent process will display a message indicating that the child is complete and the parent will now terminate.

The child process will display a message indicating that it has started. If one or more arguments were provided on the command line, the child process will perform the appropriate exec() system call to load the new executable into memory with the appropriate arguments if provided. If no arguments were provided, the child process will display a message indicating that it will terminate.

Output:

Here are several examples of what is expected:

Example 1: No Arguments

# ./assn2
PARENT started, now waiting for process ID#486
CHILD started. No arguments provided. Terminating child.
PARENT resumed. Child exit code of 0. Now terminating parent

Example 2: One Argument

# ./assn2 ls
PARENT started, now waiting for process ID#488
CHILD started. One argument provided. Calling execlp(), never to return (sniff)
assn2 assn2.c Makefile
PARENT resumed. Child exit code of 0. Now terminating parent

Example 3: More Than One Argument

# ./assn2 ls -l
PARENT started, now waiting for process ID#491
CHILD started. More than one argument provided. Calling execvp(), never to return (sniff)
total 20
-rwxrwxr--+ 1 jtang jtang 10119 Jan 4 23:00 assn2
-rw-rw-r--+ 1 jtang jtang 1175 Jan 4 23:00 assn2.c
-rw-rw-r--+ 1 jtang jtang 71 Jan 4 22:40 Makefile
PARENT resumed. Child exit code of 0. Now terminating parent

Explanation / Answer

# ./assn2
PARENT started, now waiting for process ID#486
CHILD started. No arguments provided. Terminating child.
PARENT resumed. Child exit code of 0. Now terminating parent

Example 2: One Argument

# ./assn2 ls
PARENT started, now waiting for process ID#488
CHILD started. One argument provided. Calling execlp(), never to return (sniff)
assn2 assn2.c Makefile
PARENT resumed. Child exit code of 0. Now terminating parent

Example 3: More Than One Argument

# ./assn2 ls -l
PARENT started, now waiting for process ID#491
CHILD started. More than one argument provided. Calling execvp(), never to return (sniff)
total 20
-rwxrwxr--+ 1 jtang jtang 10119 Jan 4 23:00 assn2
-rw-rw-r--+ 1 jtang jtang 1175 Jan 4 23:00 assn2.c
-rw-rw-r--+ 1 jtang jtang 71 Jan 4 22:40 Makefile
PARENT resumed. Child exit code of 0. Now terminating parent