您的位置:首页 > 运维架构 > Linux

[basic linux基础]-进程

2016-03-24 13:02 225 查看
#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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: