Re: ¿Qué significa el operador ">>"?

Hernan Martinez Foffani hernan en orgmf.com.ar
Dom Feb 26 13:36:18 CET 2006


> Estoy probando el módulo popen2 con la clase popen3 para recoger la salida y
> el valor de retorno de un comando exterior y me encuentro en que necesito
> usar el operador "valor_de_retorno >> 8" para conseguir un valor real...

Lo que tenés que usar el valor de retorno del close() del stream.
En ese valor hay mas información que el resultado del exit del programa
que invocas.  El S.O. crea un entero donde los 8 bits mas significativos
representan lo que el programa manda en exit() y los 8 menos significativos
el estado de finalización.  El operador ">>" se llama right-shift y lo que
hace es mover 8 veces cada bit hacia la derecha completando con ceros los
"agujeros" de la izquierda.

> El manual pone esto:
>
> The status code encodes both the return code of the process and information
> about whether it exited using the exit() system call or died due to a signal.
> Functions to help interpret the status code are defined in the os module; see
> section 6.1.5 for the W*() family of functions.
>
> ¿Eso quiere decir que usando la familia de funciones que dice puedo conseguir
> el valor real o otra cosa?

Dicho en python lo que tienes que hacer para obtener el valor de retorno
es:
     ...
     status = close(f)
     if WIFEXITED( status) :
         ret = WEXITSTATUS( status)
         .. etc ...

> ¿Todo el mundo hace la operación "rara" con ese operador para conseguir
> el valor de retorno?

Je... Creo que nadie puede decir con autoridad qué hace "todo el mundo" ;-)

-H.




Más información sobre la lista de distribución Python-es