 |
|
 |

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
|
|
 |
|
 |