mybash 的实现

码云链接

https://gitee.com/bestiisjava2017/laura5332/blob/master/%E4%BF%A1%E6%81%AF%E5%AE%89%E5%85%A8%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1/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;
}

转载于:https://www.cnblogs.com/besti2015/p/7711574.html

20155332 mybash的实现相关推荐

  1. Linux终端实现自己的命令解释器----mybash

    首先我们得知道Linux下产生新进程的过程是--->先复制---->再替换子进程(fork + exec) 来看代码  代码中都有解释的 下面代码实现的主要功能就是内置命令cd的简单操作和 ...

  2. 2017-2018-1 20155332实验三 实时系统报告

    20155332 实验三 任务一: 1.学习使用Linux命令wc(1)2.基于Linux Socket程序设计实现wc(1)服务器(端口号是你学号的后6位)和客户端3.客户端传一个文本文件给服务器4 ...

  3. 20155322 2017-2018-1 《信息安全系统设计》第五周 MyBash实现

    #20155322 2017-2018-1<信息安全系统设计>第五周 MyBash实现 [博客目录] 实现要求 相关知识 bash fork exec wait 相关问题 fork返回两次 ...

  4. 20155332 如何获取新技能+c语言学习调查

    如何获取新技能+c语言学习调查 你有什么技能比大多人(超过90%以上)更好? 如果问我有没有什么技能比大多数人,并且是90%的人好,我还真不敢说有,因为世界上有70亿人,要比63亿人做的好才行啊.我也 ...

  5. Linux:echo、read、cat命令

    1.echo 不换行 -n 举例:echo –n "My name is:" 执行命令: 举例: kevin@kevin:~/mybash$ echo "My home ...

  6. 2018-2019-1 20165226 《信息安全系统设计基础》第8周学习总结

    2018-2019-1 20165226 <信息安全系统设计基础>第8周学习总结 目录 一.教材学习内容总结 二.练习 三.代码托管与统计 四.学习进度条 五.参考资料 一.教材学习内容总 ...

  7. 20155308 《信息安全系统设计基础》课程总结

    20155308 <信息安全系统设计基础>课程总结 每周作业链接汇总 第一周作业:第一章<计算机系统漫游>第七章<链接> 第二周作业:第二周课上+课下测试 第三周作 ...

  8. 再次学习mysql优化

    再次学习mysql优化 表的设计规范化(三范式) 添加索引(普通索引.主键索引.唯一索引.全文索引) 分表(水平分割.垂直分割) 读写分离(写add.update.delete) 存储过程 对mysq ...

  9. python读取linux内存_使用python获取CPU和内存信息(linux系统)

    大家都知道,linux里一切皆为文件,在linux/unix的根目录下,有个/proc目录,这个/proc 是一种内核和内核模块用来向进程(process)发送信息的机制(所以叫做"/pro ...

最新文章

  1. 半导体行业必将再火十年!两大趋势成发展新动能
  2. datatable与SqlDataReader
  3. PC-如何提高计算机的启动和关机的速度?
  4. 元件原理图旋转45度_大口径大曲率半径光学元件的高精度检测
  5. 盘点和程序员相关的那些事,让你不再被割韭菜,薅羊毛!
  6. brew更新的时候不更新某个应用_可以不可以第六集剧情介绍,日剧可以不可以什么时候更新...
  7. 判断360浏览器极速和兼容模式
  8. python编写端口扫描器_使用Python编写简单的端口扫描器的实例分享
  9. 自主研发的车牌识别SDK
  10. 学渣考深大计算机,江苏科技大学又出学霸宿舍,6名同学全部考上研究生
  11. android 锁屏代码分析,Android锁屏状态下的安全分析
  12. 转-注册表对应项详解
  13. Ubuntu 20 / 21 - KDE 配置Nvidia 独立显卡
  14. ubuntu 16.04安装QQ 8.X
  15. css 根据不同屏幕设置间距_CSS根据屏幕分辨率宽度自动适应的办法
  16. 刀片服务器改台式电脑_详解刀片服务器如何走向融合
  17. python运维工程师前景及待遇_【运维工程师就业前景】百度2020年运维工程师待遇怎么样-看准网...
  18. 处理器不同编址方式、指令/数据处理方式区别
  19. 又一年没有中国队的世界杯,你还会熬夜打call吗?网友的回答亮了
  20. 1.1 input()函数--输入

热门文章

  1. 开发团队里是否需要测试人员?
  2. Java并发编程(8):多线程环境中安全使用集合API(含代码)
  3. 局部特征用于图像检索 Aggregating local features for Image Retrieval
  4. SIFT(Scale-invariant feature transform, 尺度不变特征转换)特征
  5. 编程的首要原则(s)是什么?
  6. 计算机视觉Computer Vision网址导航
  7. Android之内存泄露、内存溢出、内存抖动分析
  8. JAVA常见算法题(三十二)---找规律
  9. Windows 10 Creators Update 4 月 11 日开始推送
  10. 邮件:事务失败。 服务器响应为:DT:SPM 163 smtp