HTMLpointHTMLpoint HTMLpoint.com


 Estandár POSIX



El PHP pone a disposición muchas funciones POSIX-compliant, como aparece definido en el estándar document IEEE 1003.1. Estas funciones nos permiten intrducir una interacción completa con el sistema para mejorar la escritura de nuestros script. Vamos a ver cuáles son las funciones más importantes de este grupo.

posix_kill

Envía un signal a un determinado PID, devolviendo FALSE si el PID no está asociado a ningún proceso, verdadero en el caso opuesto. Su sintaxis es:

posix_kill(PID, SIG)

en la que PID es el pid del proceso al que queremos enviar el signal y SIG es, supuestamente, el signal. Por ejemplo, si queremos enviar un signal de kill a Netscape (pid 1234), podemos escribir:

$pid = "1234";
$signal = posix_kill($pid, KILL);


Más detalles se pueden encontrar en la manpage de kill(2).

posix_getpid

Utilizar la función que acabamos de describir trabajando desde un script es muy difícil porque, como no tenemos acceso a la shell, no podemos conocer el PID asociado a una determinada aplicación. Sin embargo, el PHP nos echa un cable con la función posix_getpid que permite introducir en una variable el PID de un proceso. La sintaxis es:

$pid = posix_getpid($application);

en la que application es, obviamente, la aplicación de la que nos interesa el PID. Utilizando esta función con la anterior, podemos escribir algo parecido a:

$pid = posix_getpid("netscape");
$signal = posix_kill($pid, KILL);


posix_getppid

La función posix_getppid() devuelve el padre del proceso que estamos utilizando. Por ejemplo, escribiendo unas dos líneas de código como las siguientes:

$parent = posix_getppid();
echo $parent;


visualizaremos en la pantalla el padre del proceso que acabamos de ejecutar: en nuestro caso, como hemos ejecutado el mando desde una shell, el PID se referirá sólo a la shell.

posix_getuid, posix_geteuid, posix_getgid, posix_getegid

estas cuatro funciones son muy parecidas y devuelven respectivamente:

  • Real user ID del proceso;
  • Effective user ID del proceso;
  • Real GID del proceso;
  • Effective GID del proceso.

    Podemos poner un ejemplo que las visualice todas:

    $UID = posix_getuid();
    echo "UID = $UID\n";
    $EUID = posix_geteuid();
    echo "EUID = $EUID\n";
    $GID = posix_getgid();
    echo "GID = $GID\n";
    $EGID = posix_getegid();
    echo "EGID = $EGID\n";


    posix_getlogin

    Esta función nos permite recuperar el nombre de login del usuario que ejecuta el script. Por ejemplo, podemos escribir:

    $login = posix_getlogin("/usr/sbin/apache");
    echo $login;


    para conseguir que el nombre del usuario que ejecuta el script se visualice en la pantalla.

    posix_uname

    esta función es párecida al "uname" de los sistemas Posix-compliant y devuelve informaciones sobre el sistema. Estas informaciones están organizadas en un array que incluye las claves:

  • sysname
  • nodename
  • release
  • version
  • machine

    Por ejemplo, ejecutando un script del tipo:

    $uname = posix_uname();
    while (list($key, $value) = each ($uname)) {
    echo "$key -> $value\n";
    }


    se obtiene el resultado:

    sysname -> Linux
    nodename -> scatolinux
    release -> 2.2.14
    version -> #11 mar lug 4 00:06:07 CEST 2000
    machine -> i586


    posix:getpwname

    esta función nos permite tener determinadas informaciones sobre un usuario del sistema partiendo de su ID. De la misma forma, la función "posix_getpwuid()" da las mismas informaciones partiendo de su ID. Un ejemplo podría ser algo parecido a:

    $user = posix_getpwnam("edo");
    while (list($info, $value) = each($user)) {
    echo "$info -- $value\n";
    }


    que devuelve:

    name -- nombre_usuario
    passwd -- x
    uid -- NUM
    gid -- NUM
    gecos -- ,,,
    dir -- /home/nombre_usuario


    en la que "nombre_usuario" es el nombre del usuario y "/home/nombre_usuario" es su directorio principal, NUM son los dos atributos numéricos asociados al UID y a GID y gecos son informaciones adicionales sobre el usuario, si las introducimos (nombre completo, etc.).

    posix_getrlimit

    Esta función devuelve un array que incluye los límites de los recursos del sistema: sin analizar las voces, vamos a ver un ejemplo:

    $resources = posix_getrlimit();
    while (list($key, $value) = each ($resources)) {
    echo "$key -> $value\n";
    }

    que devolverá un output del tipo:

    soft core -> 0
    hard core -> unlimited
    soft data -> unlimited
    hard data -> unlimited
    soft stack -> 8388608
    hard stack -> unlimited
    soft totalmem -> unlimited
    hard totalmem -> unlimited
    soft rss -> unlimited
    hard rss -> unlimited
    soft maxproc -> 256
    hard maxproc -> 256
    soft memlock -> unlimited
    hard memlock -> unlimited
    soft cpu -> unlimited
    hard cpu -> unlimited
    soft filesize -> unlimited
    hard filesize -> unlimited
    soft openfiles -> 1024
    hard openfiles -> 1024


  •   Volver al inicio de la página