实 验 题 目 进 程 的 创 建 小 组 合 作 否 姓 名 班 级 学 号 一 、 实 验 目 的 1、 了 解 进 程 的 创 建 。 2、 了 解 进 程 间 的 调 用 以 及 实 现 。 3、 分 析 进 程 竞 争 资 源 的 现 象 , 学 习 解 决 互 斥 的 方 法 。 4、 加 深 对 进 程 概 念 的 理 解 , 认 识 并 发 执 行 的 本 质 。 二 . 实 验 环 境 Windows 系 统 的 计 算 机 一 台 , 安 装 了 Linux 虚 拟 机 三 、 实 验 内 容 与 步 骤 1、 fork( ) 系 统 调 用 的 使 用 例 子 程 序 代 码 : #include
#include #include int glob=3; int main(void) { pid_t pid;int loc=3; printf("before fork();glod=%d,loc=%d.\n",glob,loc); if((pid=fork())<0) { printf("fork() error. \n"); exit(0); } else if(pid==0) { glob++; loc--; printf("child process changes glob and loc: \n"); } else wait(0); printf("parent process doesn't change the glob and loc:\n"); printf("glob=%d,loc=%d\n",glob,loc); exit(0); } 运 行 结 果 : 2、 理 解 vofork( ) 调 用 : 程 序 代 码 : #include #include #include int glob=3; int main(void) { pid_t pid; int loc=3; if((pid=vfork())<0) { printf("vfork() error\n"); exit(0); } else if(pid==0) { glob++; loc--; printf("child process changes the glob and loc\n"); exit(0); } else printf ("parent process doesn't change the glob and loc\n"); printf("glob=%d,val=%d\n",glob,loc); } 运 行 结 果 : 3、 给 进 程 指 定 一 个 新 的 运 行 程 序 的 函 数 exec(). 程 序 代 码 : printe1.c 代 码 : #include int main(int argc,char * argv[]) { int n; char * * ptr; extern char * * environ; for(n=0;n #in...