[操作系统实验] Todo - list

typedef struct SimpleCmd{
int isBack;
char **args;
char *input;
char *output
}


以上是原来的


改为
typedef struct Cmd{
int isBack; //时候为后台任务
int cmdCount; //单个命令的数目,就是以管道分隔符‘|’分割开来的命令的数目
char *cmd; //用户输入的原始命令,用于显示(如jobs命令显示的用户执行的后台任务)
SingleCmd **cmds; //SingleCmd(单个命令)的数组
char *input; //输入重定向
char *output; //输出重定向
}


SingleCmd{
char *program; //execv的第一个参数,命令路径,如/bin/echo
char **args     //命令的参数列表
int pid //命令的pid
}


例子:echo aaa | cat | cat
Cmd{
isBack:0;
cmdCount:3;
cmd:"echo aaa | cat | cat";
SingleCmd = {echo aaa,cat,cat}
input:null;
output:null
}


Job结构改为(至少有这几项),书上是用链表实现的
typedef struct Job{
int pgid; //进程组编号(jobid)
char cmd[100] //命令名
char state[100] //作业状态
Cmd* cmd;
}


要实现的函数
addJob(Cmd* cmd) //把一个cmd加入后台Job工作队列
removeJob(pgid) //根据job的pgid删除job
getJob(pgid) //返回指定pgid的job
setSingleCmdState(pgid,pid) //将pgid的job中,singleCmd.pid==pid的singleCmd.pid置为-1(表示他运行完了)
checkSingleCmdState(pgid) //检查pgid的job是否执行完(所有singleCmd.pid都为-1)
copyCmd(Cmd *cmd) //从job中复制cmd(拷贝一份),返回新的拷贝
重写execSimpleCmd下的 jobs 子命令
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值