linux shell编程,实现组合键命令ctrl +c。已给出Ctrl的实现,模仿写出ctrl +c。求帮助,是在是不懂。
/*组合键命令ctrl+z*/voidctrl_Z(){Job*now=NULL;if(fgPid==0){//前台没有作业则直接返回return;}//SIGCHLD信...
/*组合键命令ctrl+z*/
void ctrl_Z(){
Job *now = NULL;
if(fgPid == 0){ //前台没有作业则直接返回
return;
}
//SIGCHLD信号产生自ctrl+z
ingnore = 1;
now = head;
while(now != NULL && now->pid != fgPid)
now = now->next;
if(now == NULL){ //未找到前台作业,则根据fgPid添加前台作业
now = addJob(fgPid);
}
//修改前台作业的状态及相应的命令格式,并打印提示信息
strcpy(now->state, STOPPED);
now->cmd[strlen(now->cmd)] = '&';
now->cmd[strlen(now->cmd) + 1] = '\0';
printf("[%d]\t%s\t\t%s\n", now->pid, now->state, now->cmd);
//发送SIGSTOP信号给正在前台运作的工作,将其停止
kill(fgPid, SIGSTOP);
fgPid = 0;
} 展开
void ctrl_Z(){
Job *now = NULL;
if(fgPid == 0){ //前台没有作业则直接返回
return;
}
//SIGCHLD信号产生自ctrl+z
ingnore = 1;
now = head;
while(now != NULL && now->pid != fgPid)
now = now->next;
if(now == NULL){ //未找到前台作业,则根据fgPid添加前台作业
now = addJob(fgPid);
}
//修改前台作业的状态及相应的命令格式,并打印提示信息
strcpy(now->state, STOPPED);
now->cmd[strlen(now->cmd)] = '&';
now->cmd[strlen(now->cmd) + 1] = '\0';
printf("[%d]\t%s\t\t%s\n", now->pid, now->state, now->cmd);
//发送SIGSTOP信号给正在前台运作的工作,将其停止
kill(fgPid, SIGSTOP);
fgPid = 0;
} 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏15(财富值+成长值)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询