跟系统任务相关的几个命令:fg、bg、jobs、&、ctrl+z
1. & 最经常被用到
这个用在一个命令的最后,可以把这个命令放到后台执行
2. ctrl + z
可以将一个正在前台执行的命令放到后台,并且暂停
3.
jobs
查看当前有多少在后台运行的命令
4. fg
将后台中的命令调至前台继续运行
如果后台
中有多个命令,可以用 fg
%jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
5. bg 将一个在后台暂停的命令,变成继续执行
如果后台中有多个命令,可以用bg
%jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
1.
jobs列举出后台作业信息。([作业号] 运行状态 作业名称)
2. ctrl+z 将任务放到后台去,并暂停;
3. bg
<%int> 将后台任务唤醒,在后台运行;
4. fg <%int> 将后任务的程序放到前台;
1. ctrl+z 将任务放到后台去,并暂停.
主进程waitpid(pid,&status,WUNTRACED)时,子进程
退出时,父进程被唤醒
2. 将后台任务唤醒,在后台运行;
kill(pid,SIGCONT);
3. 将后台运行的程序放到前台;
kill(pid,SIGCONT);
waitpid(pid,&status,WUNTRACED);
void
fg(
char
*
p)
{
int
pid=
0;
if
(
p!=NULL)
{
pid=
atol
(
p)
;
kill
(
pid,
SIGSTOP)
;
kill
(
pid,
SIGCONT)
;
waitpid(
pid,
NULL
,
NULL
)
;
pid_jobs[
jobs_num-
-
]
=
0;
}
else
printf
(
"error /n"
)
;
return
0;
}
void
bg(
char
*
p)
{
int
pid=
0;
if
(
p!=NULL)
{
pid=
atol
(
p)
;
kill
(
pid,
SIGCONT)
;
pid_jobs[
jobs_num-
-
]
=
0;
}
else
printf
(
"error /n"
)
;
return
0;
}
//
可见,后台运行与前台运行的区别只在于前台运行等待子进程的退出而阻塞父进程操作。而后台运行时,可以在父进程中输入命令继续其他操作。本质上没有区别,
都是给子进程发送SIGCONT信号。
原地址:http://blog.chinaunix.net/u3/94039/showart_1893558.html
本文介绍了在命令行中如何使用fg、bg、jobs等命令来控制后台任务。详细解释了如何将任务置于后台运行、暂停及恢复任务,以及如何将后台任务转到前台执行。
1152

被折叠的 条评论
为什么被折叠?



