shell下,进程的前台与后台运行
跟系统任务相关的几个命令: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
---------------------------
1. 解释程序前台运行与后台运行的区别?
答:前台程序与用户直接对话;后台程序则间接地为前台程序提供支持,一般来说是为前台程序提供所需要的资源。后台程序既可以直接与前台程序进行对话,也可以使用中间程序作为媒介。通常把用户正在操作的程序称为前台程序,而用户没有操作但也在运行的程序(如系统服务)称为后台程序.
命令解释程序创建一个后台进程时,它在发出此进程命令后,
并在接收其他命令之前,不用等待这个进程结束。
例如:
$ddd &
而前台就要等待,直到进程结束为止。
例如:
$ddd
Ctrl-C就结束ddd。
前台程序和终端关联,后台程序不受终端控制。
广义上说,前台程序/后台程序并不是一个很明确的概念。如果是C/S结构,通常把客户端的程序看做前台程序,而服务器端程序看做后台程序。现在的操作系统都是多任务的操作系统,可以同时执行多个程序。前台程序就是你当前正在使用的程序,后台程序就是你开启了以后没有使用但仍在运行的程序。
shell下,进程的前台与后台运行的更多相关文章
- Linux执行shell脚本方式及区别&命令后台运行
Linux执行shell脚本方式及区别&命令后台运行 http://blog.csdn.net/heqiyu34/article/details/19089951/
- Linux下使用nohup实现在后台运行程序(转)
相比上一篇http://www.cnblogs.com/EasonJim/p/6833417.html使用screen实现后台运行程序,各有各的好处,多一种选择吧. Linux下一般比如想让某个程序在 ...
- screen mac linux下一种让程序后台运行的方法
1: screen 场景的意思.字面意思就是软件运行在不同场景 (1)创建会话 使用命令“screen -S RunWork”来创建一个screen会话,命令执行之后,就会得到一个新的shell窗口, ...
- Python3判断shell下进程是否存在&&启动&&邮件通知
判断进程是否存在 def isRunning(process_name): try: process = len(os.popen('ps aux | grep "' + process_n ...
- shell下root用户切换其他用户运行程序
工作中,一些程序,需要随机启动,但是不是以root用户运行,于是需要在rc.local中通过shell,从root用户切换到其他用户运行程序,命令如下: su -c 'command' - user ...
- linux下如何让控制台程序后台运行
方法1:./test & 方法2:(./test &) 方法3:nohup 和bg 方法4:screen -mS test /root/test 退出程序需要手动进入screen创 ...
- Android 判断APP前台,后台运行
public void checkAppState() { ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVI ...
- Linux 进程后台运行
Linux 进程后台运行 1.进程在当前终端后台运行.(关闭终端后进程自动退出) sh test.sh & 注:运行进程后跟 “&” 2.进程长期后台运行不受终端关闭影响. nohup ...
- linux 后台运行命令 nohup命令
转载:http://if.ustc.edu.cn/~ygwu/blog/archives/000538.html 2005年04月18日 简单而有用的nohup命令在UNIX/LINUX中,普通进程用 ...
随机推荐
- ArcGIS Engine -- 常用方法
空间关系 计算两点间距离 feature平移 计算范围 得到点集合的n倍Envelope范围 查询 查询要素,返回多个要素union后的Geometry 查找图层 得到地图上图层列表 根据名称在地图上 ...
- JAVA字符串格式化String.format()的使用
JAVA字符串格式化-String.format()的使用常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的sprin ...
- Jenkins 构建JavaHelloWorld
原文:http://www.cnblogs.com/itech/archive/2011/11/03/2234662.html 注意:我们知道Jenkins通过master/slave来支持分布式的j ...
- CentOS服务器的基本配置和查看
一.设置静态IP 1.修改网卡配置 编辑:vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 #描述网卡对应的设备别名,例如ifcfg-e ...
- Java中的Enum的使用与分析
使用name()方法和valueOf(String)方法可以在枚举类型对象和字符串之间方便得转换.如果valueOf(String)方法的参数不是该枚举类型合法的字符串,则会抛出IllegalArgu ...
- 14_把文件存放在SDCard
权限添加 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> /** ...
- 【USACO】Milking Cows
Three farmers rise at 5 am each morning and head for the barn to milk three cows. The first farmer b ...
- rqnoj-106-最大加权矩形-dp
和我之前做的那个切西瓜的题目相比就是小巫见大巫了.. 运用最长字段和的原理把O(n^4)转化成O(n^3) #include<stdio.h> #include<string.h&g ...
- Linux系统时间与RTC时间【转】
http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=3637782 Linux的RTC驱动相对还是比较简单的,可以将它作为一个普通的字符 ...
- 深入理解Java内存模型(三)——顺序一致性
数据竞争与顺序一致性保证 当程序未正确同步时,就会存在数据竞争.java内存模型规范对数据竞争的定义如下: 在一个线程中写一个变量, 在另一个线程读同一个变量, 而且写和读没有通过同步来排序. 当代码 ...