lab4 Process
  • Introduction
  • Knowing about process
    • Checking System Process
    • Process Identification
  • Let's Fork! Process Creation
    • Background of Process Creation
    • fork system call
    • Distinguish Parent and Child Process
    • Exercises
  • Process Execution
    • First exec example
    • Environment Variables
    • exec Family
    • exec Family: execlp
    • exec Family: execle
    • exec Family: execv
    • exec Family: execvp
    • exec Family: execve
    • exec error handling
  • Wait!
    • Problem 1: Without Wait?
    • Sleep
    • Problem 2: Zombies!
    • Wait System Call
    • waitpid
Powered by GitBook
On this page

Was this helpful?

  1. Wait!

Problem 1: Without Wait?

Below it is a typical problem to print something in child.

/* Wait/problematic.c */
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>


int main(int argc,char *argv[])
{
    printf("Before fork...\n");
    if(fork() == 0)
    {
        printf("Hello World!\n");
        exit(0);
    }
    printf("After fork..\n");
    return 0;
}

We expect the output to be:

Before fork...
Hello World!
After fork...

However, the actual output may become

Before fork...
After fork...
Hello World!

We would like to suspend the parent and let the child finish execution.

PreviousWait!NextSleep

Last updated 4 months ago

Was this helpful?