(self, pid)
Get UNIX sockets used by process by parsing 'pfiles' output.
Get UNIX sockets used by process by parsing 'pfiles' output.
Get UNIX sockets used by process by parsing pfiles output .
def _get_unix_sockets(self, pid):
        """Get UNIX sockets used by process by parsing 'pfiles' output."""
        # TODO: rewrite this in C (...but the damn netstat source code
        # does not include this part! Argh!!)
        cmd = "pfiles %s" % pid
        p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE,
                             stderr=subprocess.PIPE)
        stdout, stderr = p.communicate()
        if PY3:
            stdout, stderr = [x.decode(sys.stdout.encoding)
                              for x in (stdout, stderr)]
        if p.returncode != 0:
            if 'permission denied' in stderr.lower():
                raise AccessDenied(self.pid, self._name)
            if 'no such process' in stderr.lower():
                raise NoSuchProcess(self.pid, self._name)
            raise RuntimeError("%r command error\n%s" % (cmd, stderr))

        lines = stdout.split('\n')[2:]
        for i, line in enumerate(lines):
            line = line.lstrip()
            if line.startswith('sockname: AF_UNIX'):
                path = line.split(' ', 2)[2]
                type = lines[i - 2].strip()
                if type == 'SOCK_STREAM':
                    type = socket.SOCK_STREAM
                elif type == 'SOCK_DGRAM':
                    type = socket.SOCK_DGRAM
                else:
                    type = -1
                yield (-1, socket.AF_UNIX, type, path, "", _common.CONN_NONE)
def _get_unix_sockets ( self , pid ) : # TODO: rewrite this in C (...but the damn netstat source code # does not include this part! Argh!!) cmd = "pfiles %s" % pid p = subprocess . Popen ( cmd , shell = True , stdout = subprocess . PIPE , stderr = subprocess . PIPE ) stdout , stderr = p . communicate ( ) if PY3 : stdout , stderr = [ x . decode ( sys . stdout . encoding ) for x in ( stdout , stderr ) ] if p . returncode != 0 : if 'permission denied' in stderr . lower ( ) : raise AccessDenied ( self . pid , self . _name ) if 'no such process' in stderr . lower ( ) : raise NoSuchProcess ( self . pid , self . _name ) raise RuntimeError ( "%r command error\n%s" % ( cmd , stderr ) ) lines = stdout . split ( '\n' ) [ 2 : ] for i , line in enumerate ( lines ) : line = line . lstrip ( ) if line . startswith ( 'sockname: AF_UNIX' ) : path = line . split ( ' ' , 2 ) [ 2 ] type = lines [ i - 2 ] . strip ( ) if type == 'SOCK_STREAM' : type = socket . SOCK_STREAM elif type == 'SOCK_DGRAM' : type = socket . SOCK_DGRAM else : type = - 1 yield ( - 1 , socket . AF_UNIX , type , path , "" , _common . CONN_NONE )