Chinaunix首页 | 论坛 | 博客
  • 博客访问: 21286
  • 博文数量: 3
  • 博客积分: 1420
  • 博客等级: 上尉
  • 技术积分: 40
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-05 17:37
文章分类
文章存档

2008年(3)

我的朋友

分类:

2008-10-05 18:06:33

家里极其舒适的环境真不是一个学习的地方,所以昨天从来到学习后就把应该在家里完成的东西搞定,而且还超额完成。日语初级上册的语法都已经搞定。

晚上在看Doctor chen的。这本书应该是为内核学习打基础了。书里面加入了一些C代码来告知我们关于进程的原理。至少比我们的课本简明了很多。这样读起来也很有趣。

下面的代码简单的说明了父进程创建子进程以及两者的并发执行。fork()语句使得父进程“分裂”为两个进程,类似细胞分裂,两进程基本一致,只有微小偏差,比如PID。fork()语句之后现存的两进程其中之一便是子进程。如何区分这两个进程?fork()的返回值可以告诉我们:在父进程中fork()返回的是子进程的PID,而在子进程中返回的所0。if语句便利用了这个道理。

书上说多运行几次可能会有不同结果,不过我运行了几次,基本每次都是先执行子进程.这可能是因为exec()函数所致。

#include <stdio.h>
#include <sys/types.h>/*提供类型pid——t的定义,在pc机上与int相同*/
#include <unistd.h>/*提供系统调用的函数*/
int main()
{
    pid_t pid;
    /*此刻只有一个进程*/
    printf("PID before fork():%d\n",(int)getpid());
    pid=fork();
    /*此刻已经有了两个进程在同时运行*/
    if(pid<0)
        printf("error in fork!\n");
        else if(pid==0)
        printf("I am the child process, my process ID is %d\n",getpid());
     else
         printf("I am the parent process, my process ID is %d\n",getpid());
    return 0;    
}

阅读(906) | 评论(0) | 转发(0) |
0

上一篇:一且才刚刚开始。

下一篇:fork()和kill()

给主人留下些什么吧!~~