• mysys.c: 实现函数mysys,用于执行一个系统命令,要求如下
  • mysys的功能与系统函数system相同,要求用进程管理相关系统调用自己实现一遍
  • 使用fork/exec/wait系统调用实现mysys
  • 不能通过调用系统函数system实现mysys
    测试程序
#include <stdio.h>int main()
{printf("--------------------------------------------------\n");system("echo HELLO WORLD");printf("--------------------------------------------------\n");system("ls /");printf("--------------------------------------------------\n");return 0;
}
测试程序的输出结果
--------------------------------------------------
HELLO WORLD
--------------------------------------------------
bin    core  home        lib     mnt   root  snap  tmp  vmlinuz
boot   dev   initrd.img      lost+found  opt   run   srv   usr  vmlinuz.old
cdrom  etc   initrd.img.old  media   proc  sbin  sys   var
--------------------------------------------------

实现思路:在mysys函数中创建一个新进程,调用execl函数执行命令
代码实现

#include<stdio.h>
#include<sys/wait.h>
#include<unistd.h>
#include<sys/types.h>
#include<stdlib.h>void mysys(char *str){pid_t pid;if(str==NULL){printf("Error:wrong shell string!\n");exit(0);}pid=fork();if(pid==0)execl("/bin/sh","sh","-c",str,NULL);wait(NULL);
}int main(){printf("---------------------------------\n");mysys("echo a b c d");printf("---------------------------------\n");mysys("ls /");printf("---------------------------------\n");return 0;
}

运行结果

欢迎留言交流。。。。

操作系统上机作业--实现mysys(多进程)相关推荐

  1. 操作系统上机作业--实现shell(2)(多进程)

    sh2.c: 实现shell程序,要求在第1版的基础上,添加如下功能 • 实现文件重定向 • $ echo hello >log • $ cat log • Hello 实现思路: 和sh1.c ...

  2. 操作系统上机作业--实现shell(1)(多进程)

    sh1.c: 实现shell程序,要求具备如下功能 支持命令参数 $ echo arg1 arg2 arg3 $ ls /bin /usr/bin /home 实现内置命令cd.pwd.exit $ ...

  3. 操作系统上机作业--创建N个线程(多线程)

    ring.c: 创建N个线程,它们构成一个环 • 创建N个线程:T1.T2.T3.- TN • T1向T2发送整数1 • T2收到后将整数加1 • T2向T3发送整数2 • T3收到后将整数加1 • ...

  4. 操作系统上机作业-- 使用信号量解决生产者、计算者、消费者问题(多线程)

    pc2.c: 使用信号量解决生产者.计算者.消费者问题 • 功能和前面的实验相同,使用信号量解决 实现思路: 生产者.计算者.消费者三者之间的关系和上一个编程任务一样,不一样的是,将互斥量.条件变量封 ...

  5. 操作系统上机作业--使用条件变量解决生产者、计算者、消费者问题(多线程)

    pc1.c: 使用条件变量解决生产者.计算者.消费者问题 /* • 系统中有3个线程:生产者.计算者.消费者 • 系统中有2个容量为4的缓冲区:buffer1.buffer2 • 生产者生产'a'.' ...

  6. 操作系统上机作业--多线程排序

    sort.c: 多线程排序 • 主线程创建一个辅助线程 • 主线程使用选择排序算法对数组的前半部分排序 • 辅助线程使用选择排序算法对数组的后半部分排序 • 主线程等待辅助线程运行結束后,使用归并排序 ...

  7. 操作系统上机作业--根据莱布尼兹级数计算PI(2)(多线程)

    pi2.c: 使用N个线程根据莱布尼兹级数计算PI • 与上一题类似,但本题更加通用化,能适应N个核心,需要使用线程参数来实现 • 主线程创建N个辅助线程 • 每个辅助线程计算一部分任务,并将结果返回 ...

  8. 操作系统上机作业--根据莱布尼兹级数计算PI(1)(多线程)

    pi1.c: 使用2个线程根据莱布尼兹级数计算PI • 莱布尼兹级数公式: 1 - 1/3 + 1/5 - 1/7 + 1/9 - ... = PI/4 • 主线程创建1个辅助线程 • 主线程计算级数 ...

  9. 操作系统上机作业--使用系统调用实现mycp

    mycp.c的功能与系统cp程序相同 将源文件复制到目标文件,例子如下: 要求使用系统调用open/read/write/close实现 $ cat /etc/passwd root:x:0:0:ro ...

最新文章

  1. 【stanford C++】容器III——Vector类
  2. 如何开始SLAM学习?
  3. oozie的作业调度
  4. vue + element 顶部二级菜单_揭秘vue/react组件库中5个quot;作者不造的轮子quot;
  5. 解释型语言与编译型语言
  6. Mysql捕捉(网站)应用执行的语句
  7. ASP.NET 抓取网页内容
  8. 温度表达转化(信息学奥赛一本通-T1013)
  9. linux查看tomcat启动内存溢出,关于tomcat乱码以及tomcat jvm 内存溢出问题的解决方案和理论-Fun言...
  10. 查期刊是否开源_新期刊HardwareX促进科学的开源硬件
  11. HDU4609 FFT
  12. CSS如何水平垂直居中?
  13. [Linux程序设计][调试][splint]
  14. 【JSP内置对象】之9大内置对象(JavaWeb必背必掌握)
  15. 语句覆盖、条件覆盖、判定覆盖、条件-判定覆盖、组合覆盖、路径覆盖
  16. 贴吧老矣,尚能饭否?
  17. mac brew的安装方法
  18. 如何选购护眼灯呢?南卡/明基/孩视宝台灯哪个比较好?「测评三款热销护眼灯」
  19. win10键锁定计算机,win10系统创建一键锁定计算机的快捷方式的操作方法
  20. 欧姆龙EtherCAT通讯及OPC UA功能硫化机程序(plc程序+触摸屏程序)

热门文章

  1. 关于SP一些响应码的API返回码及解析集合
  2. apktool重新打包,error:No resource identifier found for attribute ‘compileSdkVersionCodename‘ in package
  3. weblogic概览下的上下文根配置_weblogic创建域
  4. 为自己写程序之JavsScript代码段测试器
  5. vue-cli打包之后的项目在nginx的部署
  6. HTML5中如何检查浏览器是否支持本地存储
  7. vue笔记(一)基本使用、数据检测
  8. jdbc连接oracle的几种格式
  9. mysql联合索引与Where子句优化浅析
  10. YYModel Summary