Package osh :: Package command :: Module ps
[frames] | no frames]

Source Code for Module osh.command.ps

 1  # osh 
 2  # Copyright (C) Jack Orenstein <jao@geophile.com> 
 3  # 
 4  # This program is free software; you can redistribute it and/or modify 
 5  # it under the terms of the GNU General Public License as published by 
 6  # the Free Software Foundation; either version 2 of the License, or 
 7  # (at your option) any later version. 
 8  # 
 9  # This program is distributed in the hope that it will be useful, 
10  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
11  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
12  # GNU General Public License for more details. 
13  # 
14  # You should have received a copy of the GNU General Public License 
15  # along with this program; if not, write to the Free Software 
16  # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 
17   
18  """C{ps [-o]} 
19   
20  Generates a stream of objects of type C{osh.process.Process}. 
21   
22  C{-o} omits the osh process itself from the process list. 
23  """ 
24   
25  import os 
26  import os.path 
27   
28  import osh.core 
29  import osh.process 
30   
31  Option = osh.args.Option 
32   
33  # CLI 
34 -def _ps():
35 return _Ps()
36 37 # API
38 -def ps(omitself = True):
39 """Generates a stream of objects of type C{osh.process.Process}. The osh process 40 itself is omitted if C{omitself} is true. 41 """ 42 args = [] 43 if omitself: 44 args.append(Option('-o')) 45 return _Ps().process_args(*args)
46
47 -class _Ps(osh.core.Generator):
48 49 _omit_self = None 50 51 # object interface 52
53 - def __init__(self):
54 osh.core.Generator.__init__(self, 'o', (0, None))
55 56 # BaseOp interface 57
58 - def doc(self):
59 return __doc__
60
61 - def setup(self):
62 self._omit_self = self.args().flag('-o')
63 64 # Generator interface 65
66 - def execute(self):
67 this_pid = os.getpid() 68 for process in osh.process.processes(): 69 if not self._omit_self or process.pid != this_pid: 70 self.send(process)
71