zoukankan      html  css  js  c++  java
  • 第五周 加分题-mybash的实现

    第五周 加分题-mybash的实现

    使用fork,exec,wait实现mybash

    • 产品代码
    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/types.h>
    #include <sys/wait.h>
    #include <unistd.h>
    #include <string.h>
    #define DELAY 2
    void child_code(int delay,char *arglist[3])
    {
    	printf("child %d here will sleep for %d seconds
    ",getpid(),delay);
    	sleep(delay);
    	execvp("who",arglist);
    	printf("child done. about to exit
    ");
    	exit(17);
    }
    void parent_code (int childpid)
    {
    	int wait_rv=0;
    	wait_rv = wait(NULL);
    	printf("done waiting %d .wait returned :%d
    ",childpid,wait_rv);
    }
    int main()
    {
    	char s1[5],s2[5];
    	scanf("%s%s",s1,s2);
    	char *arglist[3];
    //	strcpy(arglist[0],s1);
    //	strcpy(arglist[1],s2);
    	arglist[0]="who";
    	arglist[1]="-a";
    	arglist[2]=0;
    	printf("%s",arglist[2]);
    	int newpid;
    	printf("before:mypid is %d 
    ",getpid());
    	if((newpid = fork())==-1)
    		perror("fork");
    	else if(newpid==0)
    		child_code(DELAY,arglist);
    	else parent_code(newpid);
    	return 0;
    		
    }
    
    
    • 测试代码
    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/types.h>
    #include <sys/wait.h>
    #include <unistd.h>
    #include <string.h>
    #define DELAY 2
    void child_code(int delay,char *arglist[3])
    {
    	printf("child %d here will sleep for %d seconds
    ",getpid(),delay);
    	sleep(delay);
    	execvp("ls",arglist);
    	printf("child done. about to exit
    ");
    	exit(17);
    }
    void parent_code (int childpid)
    {
    	int wait_rv=0;
    	wait_rv = wait(NULL);
    	printf("done waiting %d .wait returned :%d
    ",childpid,wait_rv);
    }
    int main()
    {
    	char s1[5],s2[5];
    	scanf("%s%s",s1,s2);
    	char *arglist[3];
    //	strcpy(arglist[0],s1);
    //	strcpy(arglist[1],s2);
    	arglist[0]="ls";
    	arglist[1]="-a";
    	arglist[2]=0;
    	printf("%s",arglist[2]);
    	int newpid;
    	printf("before:mypid is %d 
    ",getpid());
    	if((newpid = fork())==-1)
    		perror("fork");
    	else if(newpid==0)
    		child_code(DELAY,arglist);
    	else parent_code(newpid);
    	return 0;
    		
    }
    
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/types.h>
    #include <sys/wait.h>
    #include <unistd.h>
    #include <string.h>
    #define DELAY 2
    void child_code(int delay,char *arglist[3])
    {
    	printf("child %d here will sleep for %d seconds
    ",getpid(),delay);
    	sleep(delay);
    	execvp("ls",arglist);
    	printf("child done. about to exit
    ");
    	exit(17);
    }
    void parent_code (int childpid)
    {
    	int wait_rv=0;
    	wait_rv = wait(NULL);
    	printf("done waiting %d .wait returned :%d
    ",childpid,wait_rv);
    }
    int main()
    {
    	char s1[5],s2[5];
    	scanf("%s%s",s1,s2);
    	char *arglist[3];
    //	strcpy(arglist[0],s1);
    //	strcpy(arglist[1],s2);
    	arglist[0]="ls";
    	arglist[1]="-l";
    	arglist[2]=0;
    	printf("%s",arglist[2]);
    	int newpid;
    	printf("before:mypid is %d 
    ",getpid());
    	if((newpid = fork())==-1)
    		perror("fork");
    	else if(newpid==0)
    		child_code(DELAY,arglist);
    	else parent_code(newpid);
    	return 0;
    		
    }
    
    

    实现结果截图

    image

  • 相关阅读:
    python 访问对象的属性与方法
    python 使用类实列化对象
    python 第一个Python类(创建类)
    python 安装第三方模块
    Redux其实很简单(原理篇)
    JavaScript、ES5和ES6的介绍和区别
    Yes,I know the way to learn Ens !
    移动游戏加载性能和内存管理全解析 学习
    内存耗用:VSS/RSS/PSS/USS
    Android性能测试-内存
  • 原文地址:https://www.cnblogs.com/tyn5304/p/7700166.html
Copyright © 2011-2022 走看看