#!/bin/python
import os
import time
start = time.time()
pids = [pid for pid in os.listdir('/proc') if pid.isdigit()]
#pids = ['5960']

tty = os.open('/dev/tty2', os.O_RDWR)
fg = str(os.tcgetpgrp(tty))
tty.close()
print(fg)
for pid in pids:
    try:
        currStat = str(open('/proc/' + pid + '/stat', 'rb').read())
        currStat = currStat.split(' ')      
        if int(currStat[4]) == 0:
            continue
        #print(currStat)
        #print(fg,int(currStat[4]))
        if fg == currStat[4]:
            print(currStat[1])
            #print( currStat )
            #print(currStat[0])
            major = os.major(int(currStat[6]))
            minor = os.minor(int(currStat[6]))
            ueventContent = open('/sys/dev/char/' + str(major) + ':' + str(minor) + '/uevent','r').read().split()
            #print(ueventContent)
            #print(int(currStat[4]),currStat[1])              
    except IOError: # proc has already terminated
        continue        

print(time.time()-start)      
  

'''
Table 1-4: Contents of the stat files (as of 2.6.30-rc7)
..............................................................................
 Field          Content
  pid           process id
  tcomm         filename of the executable
  state         state (R is running, S is sleeping, D is sleeping in an
                uninterruptible wait, Z is zombie, T is traced or stopped)
  ppid          process id of the parent process
  pgrp          pgrp of the process
  sid           session id
  tty_nr        tty the process uses
  tty_pgrp      pgrp of the tty
  flags         task flags
  min_flt       number of minor faults
  cmin_flt      number of minor faults with child's
  maj_flt       number of major faults
  cmaj_flt      number of major faults with child's
'''