Linux-进程管理

点击量:12

本文出自svtter.com

进程的创建

用于进程的创建。fork()的作用是,从当前位置创建一个子进程,并执行。fork的返回值为子进程的pid

#include <stdio.h>
void main()
{
    int p1, p2;
    if (p1 = fork()) //父进程返回1, 子进程返回0
        putchar('b');
    else
    {
        if(p2 = fork())
            putchar('c');
        else
            putchar('a');
    }
}

运行结果

运行结果

进程的控制

在这段代码中使用了lockf, 和wait函数。作用是什么呢?

  • lockf顾名思义是锁定file. lockf(1, 1, 0)锁定资源,lockf(1, 0, 0)释放资源。

  • wait作用为等待子进程的返回信息。wait中的signal用于接受进程的返回信号,即exit(0)中的0

#include <stdio.h>
#include <wait.h>
// 利用lockf(1, 1, 0)锁定输出设备
// lockf(1, 0, 0)解锁输出设备
int main()
{
    int p1, p2, i;
    if(p1 = fork())
    {
        lockf(1, 1, 0);
        for(i = 0; i < 500; i++)
            printf("parent%d\n", i);
        lockf(1, 0, 0);
        wait(0);        //confirm the father killed after child
        exit(0);
    }
    else
    {
        if(p2 = fork())
        {
            lockf(1, 1, 0);
            for(i = 0; i < 500; i++)
            printf("son %d\n", i);
            lockf(1, 0, 0);
            wait(0);        //
            exit(0);
        }
        else
        {
            lockf(1, 1,0);
            for(i = 0; i < 500; i++)
                printf("grandchild%d\n", i);
            lockf(1, 0,0);
            exit(0);
        }
    }
}

运行结果

运行结果

发表评论

电子邮件地址不会被公开。 必填项已用*标注