《Ubuntu系统入门lab.ppt》由会员分享,可在线阅读,更多相关《Ubuntu系统入门lab.ppt(12页珍藏版)》请在三一办公上搜索。
1、进程操作,夏莹杰x,Ubuntu网络配置,进Windows找到IP、子网掩码、网关、DNS 进入Ubuntu配置相关参数,进程的创建,一个父进程可以创建一个或多个子进程,这些进程共享内存中同一程序文本,但每个进程有自己的独立的数据和堆栈区。一个进程可以在任何时刻执行新的程序,并且在它的生命周期中运行几个程序。,Linux提供了几个系统调用函数来创建和终止进程,以及在进程中执行新程序fork系统调用创建新进程exec系统调用执行一个新程序wait阻塞自身进程来等待指定的进程状态发生改变exit系统调用终止进程,Linux进程创建,fork,fork系统调用创建新进程调用fork的进程为父进程新进
2、程是子进程子进程几乎就是父进程的完全复制。它的地址空间是父进程的复制,一开始也是运行同一程序fork系统调用为父子进程返回不同的值,对父进程返回子进程的pid号,对子进程返回的是0。,execlp,可以通过一个进程来启动新程序的执行一个进程一旦调用exec类函数,它本身就结束了。#include int execlp(char*cmd_path,char*cmd_name,char*arg1,char*arg2,.,NULL);第一个参数是命令路径(含命令名),第二个参数是命令名,第三个参数以后是参数,最后一个参数是NULL。,wait,pid_t wait(int*status)进程一旦调用
3、了wait,就立即阻塞自己,由wait自动检测是否当前进程的某个子进程已经结束,如果找到了这样一个已经结束的子进程,wait会将它彻底销毁后返回;如果没有找到这样一个子进程,wait会一直阻塞。wait(NULL);不管子进程是如何结束,只在意它是否结束。,exit,#includevoid exit(int status);用来终止一个进程的。进程只要执行到exit系统调用,进程就会停止剩下的所有操作,清除包括PCB在内的各种数据结构。参数status,我们可以利用这个参数传递进程结束时的状态,0表示没有意外的正常结束;其他的数值表示出现了错误,进程非正常结束。,#include#inclu
4、de#include int main()pid_t pid;pid=fork();if(pid 0)fprintf(stderr,fork failed);exit(-1);,Test Case 1,else if(pid=0)printf(Child Beginn);execlp(/bin/ls,ls,NULL);elsewait(NULL);printf(Child Completen);printf(Parent Beginn);execlp(/bin/date,date,NULL);printf(Parent Completen);exit(0);,#include#include#include int value=5;int main()pid_t pid;pid=fork();if(pid=0)value+=15;printf(“Child:value=%dn,value);else if(pid0)wait(NULL);printf(PARENT:value=%dn,value);exit(0);,Test Case 2,Test,五个学生一组建立一个子进程(1分)先让子进程输出当前所在位置(2分)再让父进程在当前目录下新建一个名为hise的文件夹(2分)(Bonus)最后让父进程将程序源码文件(.C)拷贝到新建的hise文件夹(2分),