c|操作系统上机作业--实现mysys(多进程)

  • mysys.c: 实现函数mysys,用于执行一个系统命令,要求如下
  • mysys的功能与系统函数system相同,要求用进程管理相关系统调用自己实现一遍
  • 使用fork/exec/wait系统调用实现mysys
  • 不能通过调用系统函数system实现mysys
    测试程序
#include int main() { printf("--------------------------------------------------\n"); system("echo HELLO WORLD"); printf("--------------------------------------------------\n"); system("ls /"); printf("--------------------------------------------------\n"); return 0; } 测试程序的输出结果 -------------------------------------------------- HELLO WORLD -------------------------------------------------- bincorehomelibmntrootsnaptmpvmlinuz bootdevinitrd.imglost+foundoptrunsrvusrvmlinuz.old cdrometcinitrd.img.oldmediaprocsbinsysvar --------------------------------------------------

实现思路:在mysys函数中创建一个新进程,调用execl函数执行命令
代码实现
#include #include #include #include #includevoid 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; }

【c|操作系统上机作业--实现mysys(多进程)】运行结果
c|操作系统上机作业--实现mysys(多进程)
文章图片

欢迎留言交流。。。。

    推荐阅读