7. How can you get/set an environment variable from a program?
Getting the value of an environment variable is done by using "getenv()".
8. How can a parent and child process communicate?
A parent and child can communicate through any of the normal inter-process communication schemes (pipes, sockets, message queues, shared memory), but also have some special ways to communicate that take advantage of their relationship as a parent and child. One of the most obvious is that the parent can get the exit status of the child.
9. What is a zombie?
When a program forks and the child finishes before the parent, the kernel still keeps some of its information about the child in case the parent might need it - for example, the parent may need to check the child's exit status. To be able to get this information, the parent calls 'wait()'; In the interval between the child terminating and the parent calling 'wait()', the child is said to be a 'zombie' (If you do 'ps', the child will have a 'Z' in its status field to indicate this.)
10. What are the process states in Unix?
As a process executes it changes state according to its circumstances. Unix processes have the following states:
11. What Happens when you execute a program?
When you execute a program on your UNIX system, the system creates a special environment for that program. This environment contains everything needed for the system to run the program as if no other program were running on the system. Each process has process context, which is everything that is unique about the state of the program you are currently running. Every time you execute a program the UNIX system does a fork, which performs a series of operations to create a process context and then execute your program in that context.
12. What Happens when you execute a command?
When you enter "ls" command to look at the contents of your current working directory, UNIX does a series of things to create an environment for "ls" and the run it: The shell has UNIX perform a fork. This creates a new process that the shell will use to run the ls program. The shell has UNIX perform an exec of the "ls" program. This replaces the shell program and data with the program and data for "ls" and then starts running that new program. The "ls" program is loaded into the new process context, replacing the text and data of the shell. The "ls" program performs its task, listing the contents of the current directory.