|
![]() | 作者: 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 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号