后台进程
后台进程(Background Process)是一种在不需用户干预的情况下运行于操作系统后台的计算机进程[1] ,通常用于执行如日志记录、系统监测、作业调度[2]以及用户提醒[3]等任务。
在UNIX与类UNIX系统中,后台进程的进程组ID(即PGID,可用ps命令获得)与控制终端进程组ID(即TPGID)不同,因而也可以此辨识后台进程。后台进程无法接收从键盘传送的信号(如Ctrl-C)[4],但从更专业的定义来说,程序是否能收到用户的中断信号并非后台进程的判别标准。
虽然后台进程通常用于仅需少量资源的应用,但任何进程无论占用资源多少都可以运行在后台,且即使程序在后台运行,其行为与前台进程也并无差异[1]。
运行与“返回”
在类UNIX系统的命令行模式下,用户可使用“&”操作符以启动进程并使之运行于后台,但标准输出(stdout)和标准错误输出(stderr)若未重定向则仍于前台(即当前父终端)输出。命令bg可将挂起的进程转移到后台继续执行,而相对应的,命令fg则可使一个后台进程返回前台(即进程启动时所在的父终端)执行。除此之外,命令jobs可用于列出与当前终端相关联的所有进程(其中也包括后台进程)及其状态,因而也可用于将后台进程转至前台[4][5]。
守护程序
守护程序(Daemon)是一种特殊的不间断运行的后台进程,常用于等待特定事件的发生或者预设条件的满足以触发事件[6],这些进程一般使用最少的系统资源,其所执行的任务也基本不需要来自用户的输入。当进程配合daemon函数启动后,守护进程就会与其父终端脱离联系[7],因而也不会在当前终端中输出信息。
智能手机
现今许多新型智能手机与PDA的操作系统都可以运行后台进程,但移动设备操作系统上的后台程序所能完成的任务与能分配到的资源也因硬件性能差异而常有所限制,如Android上后台进程的CPU使用率就限定于5%~10%的范围内[8],而iOS上的第三方应用程序在后台运行时也只能完成指定范围内的任务[3];除此以外,在iOS和Android上,系统也会在后台进程占用的系统存储空间过多时将其杀死[3][8]。
参考资料
- . The Linux Tutorial. [14 November 2010]. (原始内容存档于2020-08-15).(英文)
- Michele Cyran. . Oracle Corporation. December 1993 [12 November 2010]. B10743-01. (原始内容存档于2013-03-02).(英文)
- Jesus Diaz. . Gizmodo. 8 April 2010 [14 November 2010]. (原始内容存档于2010-11-02).(英文)
- . Free Software Foundation, Inc. 23 December 2009 [10 November 2010]. (原始内容存档于2011-08-23).(英文)
- Åke Nordlund. . 7 February 2007 [10 November 2010]. (原始内容存档于2012-02-13).(英文)
- Eric S. Raymond. . 1 October 2004 [10 November 2010]. (原始内容存档于2010-11-03).(英文)
- raf. . 12 June 2010 [10 November 2010]. (原始内容存档于2010-10-21).(英文)
- Matt Buchanan. . Gizmodo. 2010-04-29 [14 November 2010]. (原始内容存档于2010-10-17).(英文)