论坛: UNIX系统 标题: 理解Linux的进程 复制本贴地址    
作者: tysx [tysx]       登录
在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.数据和文件描素符号的继承 子进程中所有的变量与父进程中保持一致. 子进程继承父进程的文件描述符


地主 发表时间: 04/06 20:50

回复: xiaojun [xiaojun]   剑客   登录
我只用不写,对UNIX不是太懂,但这么写,偶还能看明白。

B1层 发表时间: 04/09 18:50

论坛: UNIX系统

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号