【发布时间】:2016-01-01 23:51:06
【问题描述】:
我正在尝试制作自己的 linux shell。我已经修复了它正在使用此代码的 bg 命令:
if (strcmp(worte[0], "bg")==0){
pid_t pidnumber;
pidnumber=atoi(worte[1]);
printf("PID: %d", pidnumber);
kill(pidnumber, SIGCONT);
return 0;
}
但是,fg 命令无法正常工作。当我输入“fg 12345”(12345 是进程 ID)时,它会将该进程置于前台,但我无法使用 Ctrl-Z 停止它,也无法使用 Ctrl-C。我的代码如下
if (strcmp(worte[0], "fg")==0){
pid_t pidnumber;
pidnumber=atoi(worte[1]);
tcsetpgrp(0, getpgid(pidnumber));
waitpid(getpgid(pidnumber), NULL, WUNTRACED);
tcsetpgrp(0, getpgid(shellpid));
return 0;
}
在代码中,worte[0] 指的是 fg,worte1 指的是进程 ID(例如:12345)。感谢您的帮助,我该如何解决我的问题。 Please look at the image to see my problem obviously
【问题讨论】: