如何判断当前进程是否是一个后台进程?
如何判断当前进程是否是一个后台进程? 问题点数:0、回复次数:5Top
1 楼jiaojian77(长夜漫漫)回复于 2003-12-02 18:25:03 得分 0
upTop
2 楼mosaic()回复于 2003-12-02 19:31:03 得分 0
1. 后台进程的父进程是init进程,因此ppid=1. 后台进程的子进程也可称后台进程,他们的ppid当然就不是1了。
2. 后台进程没有控制终端,因此用ps -ef看的话其tty一般为-或?.
可以从这些信息来初步判断。
Top
3 楼linaxing(三月三)回复于 2003-12-03 08:53:19 得分 0
楼上答案1的补充:
一个进程的组id代表的进程的ppid为1,那么这个进程就是后台进程。Top
4 楼jiaojian77(长夜漫漫)回复于 2003-12-03 16:36:08 得分 0
前台进程组只有一个,后台进程组可以有多个,(好像是这样吧?)
可以不可换个方向,判断是否是前台进程。
这样可不可以?
获得标准输出上的前台进程组ID
tcgetpgrp(1)
获得当前进程的组ID
getpgid(getpid())
然后判断这两个ID是否相等,如果相等那么当前进程就是前台进程,反之就不是。
不知对不对?Top
5 楼fierygnu(va_list)回复于 2003-12-03 17:15:27 得分 0
daemon和后台进程组是两个不同的概念:前者的判据应该是mosaic(影子)的答案2,即没有控制终端。后台进程组是用来进行job控制的。
方法对。Top




