mybash 的实现

码云链接

https://gitee.com/bestiisjava2017/laura5332/blob/master/信息安全系统设计/mybash.c

遇到的问题

  • 定义 char *arlgist[[3];

scanf("%s",arlgist[0]);

scanf("%s",arlgist[1]);

编译可以通过,但是运行后内存出错。

解决方案

arglist[0]=(char)malloc(sizeof(char)10);

arglist[1]=(char)malloc(sizeof(char)10);

  • 动态分配内存空间后,运行就没有问题了。
#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\n",getpid(),delay);
//sleep(delay);
execvp("who",arglist);
//printf("child done. about to exit\n");
exit(17);
}
void parent_code (int childpid)
{
int wait_rv=0;
wait_rv = wait(NULL);
//printf("done waiting %d .wait returned :%d\n",childpid,wait_rv);
}
int main()
{
fork();
char *arglist[3]; arglist[0]=(char*)malloc(sizeof(char)*10);
arglist[1]=(char*)malloc(sizeof(char)*10);
scanf("%s",arglist[0]);
scanf("%s",arglist[1]);
//arglist[0]="who";
//arglist[1]="-a";
arglist[2]=0;
//printf("%s",arglist[2]);
int newpid;
//printf("before:mypid is %d \n",getpid());
if((newpid = fork())==-1)
perror("fork");
else if(newpid==0)
child_code(DELAY,arglist);
else parent_code(newpid);
return 0;
}

20155332 mybash的实现的更多相关文章

  1. Mybash的实现

    Mybash的实现 要求: 使用fork,exec,wait实现mybash 写出伪代码,产品代码和测试代码 发表知识理解,实现过程和问题解决的博客(包含代码托管链接) 背景知识 1. fork 使用 ...

  2. 2017-2018-1 20155215 第五周 mybash的实现

    题目要求 使用fork,exec,wait实现mybash 写出伪代码,产品代码和测试代码 发表知识理解,实现过程和问题解决的博客(包含代码托管链接) 学习fork,exec,wait fork ma ...

  3. 2017-2018-1 20155306 《信息安全系统设计基础》Mybash的实现

    2017-2018-1 20155306 <信息安全系统设计基础>Mybash的实现 要求: 使用fork,exec,wait实现mybash 写出伪代码,产品代码和测试代码 发表知识理解 ...

  4. 20165223 《信息安全系统设计基础》 实现mybash

    一.了解 mybash 1. 简介   bash 是 Bourne Again Shell 的缩写,是linux默认的标准shell(也是大家常说的系统内核),bash也是Unix/Linux上常见的 ...

  5. 20165220 mybash

    使用fork,exec,wait实现mybash - 写出伪代码,产品代码和测试代码 - 发表知识理解,实现过程和问题解决的博客(包含代码托管链接) 1.fork 功能:创建一个新的进程 一个现存进程 ...

  6. 实现mypwd和mybash

    一.pwd 1.学习pwd命令 man pwd查看pwd功能 可以得知pwd功能是打印当前目录 2.研究pwd实现需要的系统调用(man -k; grep),写出伪代码 (1)man -k direc ...

  7. 实现mybash

    任务内容 1.使用fork,exec,wait实现mybash 查找资料: fork函数 通过fork()系统调用我们可以创建一个和当前进程印象一样的新进程.我们通常将新进程称为子进程,而当前进程称为 ...

  8. 实现mypwd&mybash&myod&读者写者

    目录: 一.mypwd 二.mybash 三.myod 四.读者.写者 一.实现mypwd 学习pwd命令 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 实现mypwd 测试m ...

  9. 20155219 mybash的实现

    第五周加分题--mybash的实现 题目要求 1.使用fork,exec,wait实现mybash 2.写出伪代码,产品代码和测试代码 3.发表知识理解,实现过程和问题解决的博客(包含代码托管链接) ...

随机推荐

  1. Alpha 冲刺报告(1/10)

    Alpha 冲刺报告 队名:洛基小队 峻雄(组长) 已完成:α版要完成的第一部分的游戏内容规划 明日计划:学习脚本教程,熟悉一下相关API 剩余任务:物品背包交互脚本 困难:对于JS脚本的不熟悉:如何 ...

  2. host 'xx' is not allowed to connect to this MySql server

    update mysql.user set host = '%' where user = 'root'; FLUSH PRIVILEGES; select * from mysql.user;

  3. 小白学CMD下运行MySQL

    将mysql目录下bin目录中的mysql.exe放到C:\WINDOWS下,可以执行以下命令 连接:mysql -h主机地址 -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也一样) ...

  4. Jenkins在CentOS中的安装

    环境准备: tomcat,jdk 包准备:Jenkins的war包,下载路径:https://jenkins.io/download/ 把下载好的war包放在tomcat的webapps中,重启tom ...

  5. linux mint sublime3的c编译环境配置

    通过Tools>>Build System>>New Build System弹出新建文件来设置,也可以replace覆盖以前的 一种方式,konsole可以通过sudo ap ...

  6. 20155203 2016-2017-4 《Java程序设计》第9周学习总结

    20155203 2016-2017-4 <Java程序设计>第9周学习总结 教材学习内容总结 课堂内容 两个类如果有公共的部分要放在父类中,多次复用.当我们用父类或接口去声明对象的引用生 ...

  7. mysql驱动jar包下载

    1.百度 maven-repo,进入maven-repo官网查找 2.查找,  如下图: 查找mysql驱动包 3.下载mysql驱动包: 4.选择版本: 5.下载:

  8. 使用Apache HttpClient 4.x进行异常重试

    在进行http请求时,难免会遇到请求失败的情况,失败后需要重新请求,尝试再次获取数据. Apache的HttpClient提供了异常重试机制,在该机制中,我们可以很灵活的定义在哪些异常情况下进行重试. ...

  9. Maven创建项目一些常见的问题

    1 .创建的项目中没有src/main/java.没有src/test/java 主要原因在于在创建项目的时候,使用的是系统自带的jdk,修改方法: 右键项目——Properties——javaBui ...

  10. Bluetooth® Low Energy Beacons

    Bluetooth® Low Energy Beacons ABSTRACT (abstract ) 1.This application report presents the concept of ...