2 votos

¿Por qué pidof desde homebrew devuelve siempre cero?

He instalado pidof vía homebrew

brew install pidof

Y piensa en dos casos:

$ pidof bash > /dev/null; echo $?
$ pidof asdf > /dev/null; echo $?

Los resultados son:

0
0

¿Por qué ocurre? Otros linux lanzan 1 cuando pidof no pudo encontrar el proceso.

3voto

Muhammet Can Puntos 131

Si miras la fórmula de Homebrew de pidof Verás que la versión Homebrew se construye a partir de : http://www.nightproductions.net/downloads/pidof_source.tar.gz

Si miras el código fuente pidof.c utilizado por Homebrew, verá que cada ocurrencia del return en la función principal, es de la forma

return 0

excepto una vez, cuando se imprime el uso del comando:

printf("USAGE: %s [-klvh] [PID name]\n",ProgName);
                return 1;
                break;

Por otro lado, en las distribuciones de Linux, como Debian El pidof viene del Programas de inicio al estilo del Sistema V . Si descargas el código fuente y miras killall5.c (que luego se vincula a pidof ), tienes en la última línea de la función principal:

return retval;

donde retval puede ser no nulo.

Así que la resonancia principal por la que la versión Homebrew de pidof y la versión Linux de pidof devuelven valores diferentes es porque utilizan una base de código diferente.

3voto

Jose Chavez Puntos 645

La razón es que el pidof de HomeBrew es un programa diferente al pidof en Linux. Aunque comparten el mismo nombre y parte de la misma funcionalidad, en realidad son bastante diferentes.

Por ejemplo, el programa HomeBrew pidof también matará procesos por usted cuando especifique el argumento -k, que Linux pidof no puede hacer. En cambio, Linux pidof le permite especificar que sólo quiere que se devuelva un único PID en modo de disparo único con el parámetro -s, la versión HomeBrew no tiene esa opción. Hay muchas otras diferencias.

En Linux, pidof proviene del omnipresente sysvinit-tools paquete. Cuando se hace un pidof programname en Linux, hace un bucle a través de los procesos en ejecución mientras mantiene un registro de si encontró o no el nombre del programa que está buscando. Si no lo encuentra, devuelve un estado de salida de !0 (que es 1).

En HomeBrew, pidof es una utilidad independiente de "Producciones nocturnas" . Su programa no tiene ninguna fuente en común con el Linux pidof y no hace un seguimiento de si encontró o no el nombre del programa. Siempre devuelve un estado de salida de 0 en cualquier caso.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X