[basic linux基础]-进程

来源:互联网 发布:mtv制作软件 免费版 编辑:程序博客网 时间:2024/04/30 04:33


#include <sys/ytpes.h>#include <unistd.h>pid_t fork(void);

在父进程中fork调用,返回的是子进程的pid(就是当前调用fork的进程id);

子进程的fork调用,返回的是0;(就是说fork(void)语句,父子两个进程都有返回值)

这时候新老两个进程同时接着执行,各自都有自己的pid。因为fork系统调用复制了当前进程,在进程表中创建一个新的表项,新表相的许多属性与当前进程是相同的,新进程几乎与原进程一模一样,执行的代码也完全相同,但是新进程有自己的数据空间、环境和文件描述符,fork与exec函数结合在使用就是创建新进程所需要的一切了;

/*************************************************************************> File Name: fork1.c> Author: > Mail: > Created Time: 2016年03月21日 星期一 10时19分20秒 ************************************************************************/#include<stdio.h>#include<sys/types.h>#include<unistd.h>#include<stdlib.h>int main(){    pid_t pid;    char *message;    int n;    printf("fork program starting\n");    pid = fork();    printf("pid = %d\n",pid);    switch(pid){        case -1:        perror("fork failed");        exit(1);        case 0:        message = "this is the child";        n = 5;        break;        default:        message = "this is the program";        n = 3;        break;    }    for(;n>0;n--){        puts(message);        sleep(1);    }    exit(0);}
等待一个进程:fork启动了一个子进程,子进程有了自己的生命周期并将运行。那么我们怎么控制父子两个进程的运行顺序呢?

使用wait()函数,在父进程中调用wait,让父进程等待子进程的结束。

#include <sys/types.h>#incldue <sys/wait.h>pit_d wait(int *stat_loc>



0 0