当前位置:Linux教程 - Linux - 理解Linux的进程

理解Linux的进程



         在UNIX中,进程是正在执行的程序.他行当于WINDOWS环境内的任务.每个进程包括代码和数据.
    1.进程的建立 pid_t fork(void) fork()是将LINUX变成多任务系统的基础.

    看这个程序片断 :

    printf(“Hello!n“); pid=fork(): printf(“Hown“);

    fork()调用后,系统产生一个该进程的副本,且两个进程同时执行.这个副本进程叫做原进程的子进程,而原进程叫做这个副本进程的父进程.还有,fork()调用后子进程和父进程的指针同时指向printf(“Hown“).

    调用fork()后,返回一个pid_t型的pid,通常用来标示子进程和父进程.在子进程中pid为0,在父进程中,pid被置为一个合法的正整数.

    看这个例子:

    #include #include

    main(){ pid_t pid; printf(“Calling fork!n“); pid=fork(); if(!pid) printf(“I am the child.“); else if(pid>0) printf(“I am the parant.n“); else printf(“fork failed.n“); } 在fork()后,用了三个分支来判断进程.

    exec系列调用 在unistd.h中,有类似int execl(const char *path,const char *arg,...)的几个调用.和fork()调用不一样的fork()是产生了一个进程的内存拷贝,而exec系列调用则使用一个新的进程覆盖了原来进程的内存空间.

    看这个例子:

    #include #include

    main(){ printf(“Excuting lsn“); execl(“/bin/ls“,“-l“,NULL); }

    2.数据和文件描素符号的继承 子进程中所有的变量与父进程中保持一致. 子进程继承父进程的文件描述符号.
    发布人:Crystal 来自:Linux开发指南