|  | @@ -253,17 +253,21 @@ def _create_pidlock(pidfile):
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def fileno(f):
 | 
	
		
			
				|  |  | -    """Get object fileno, or :const:`None` if not defined."""
 | 
	
		
			
				|  |  | -    if isinstance(f, int):
 | 
	
		
			
				|  |  | +    if isinstance(f, (int, long)):
 | 
	
		
			
				|  |  |          return f
 | 
	
		
			
				|  |  | +    return f.fileno()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +def maybe_fileno(f):
 | 
	
		
			
				|  |  | +    """Get object fileno, or :const:`None` if not defined."""
 | 
	
		
			
				|  |  |      try:
 | 
	
		
			
				|  |  | -        return f.fileno()
 | 
	
		
			
				|  |  | +        return fileno(f)
 | 
	
		
			
				|  |  |      except AttributeError:
 | 
	
		
			
				|  |  |          pass
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def close_open_fds(keep=None):
 | 
	
		
			
				|  |  | -    keep = [fileno(f) for f in keep if fileno(f)] if keep else []
 | 
	
		
			
				|  |  | +    keep = [maybe_fileno(f) for f in keep if maybe_fileno(f)] if keep else []
 | 
	
		
			
				|  |  |      for fd in reversed(range(get_fdmax(default=2048))):
 | 
	
		
			
				|  |  |          if fd not in keep:
 | 
	
		
			
				|  |  |              with ignore_errno(errno.EBADF):
 | 
	
	
		
			
				|  | @@ -299,7 +303,7 @@ class DaemonContext(object):
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              close_open_fds(self.stdfds)
 | 
	
		
			
				|  |  |              for fd in self.stdfds:
 | 
	
		
			
				|  |  | -                self.redirect_to_null(fileno(fd))
 | 
	
		
			
				|  |  | +                self.redirect_to_null(maybe_fileno(fd))
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              self._is_open = True
 | 
	
		
			
				|  |  |      __enter__ = open
 |