cambiar los permisos en C mediante el uso de exec ()
Pregunta
¿Cómo puedo aplicar el comando chmod de archivos mediante el uso de exec? Le agradecería si alguien me puede proporcionar un código.
Solución
intente esto: http://support.sas. com / documentación / onlinedoc / SASC / doc / LR2 / execve.htm véase también: http://linux.about.com/library/cmd/blcmdl3_execvp.htm
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
main()
{
pid_t pid;
char *parmList[] = {"/bin/chmod", "0700", "/home/op/biaoaai/bead",NULL};
if ((pid = fork()) ==-1) //fork failed
perror("fork error");
else if (pid == 0) { //child (pid==0 if child)
execvp("chmod", parmList);
printf("Return not expected. Must be an execve error.n");
} else { //parent (pid==child process)
//parent specific code goes here
}
}
Editar:. En realidad nunca compilado ... actualizado con los usuarios paramlist de trabajo
Otros consejos
No voy a mostrar un modelo de trabajo, pero execve () funciona de esta manera:
char *args[] = {"foo", "argument1", "argument2", (char *)NULL};
... mango bifurcación ....
res = execve("/sbin/foo", args, (char *)NULL);
... mango execve () en su ausencia ....
El tercer argumento a execve () se deja como ejercicio para el lector a la investigación, NULL puede o puede no ser adecuado para su asignación. Además, su hasta usted para determinar cuál debe ser el tipo res
y lo que debe ser igual en caso de éxito. NULL Aviso de fundición.
El especificación UNIX única suele ser un lugar bueno para comenzar .
A partir de código C, llamando directamente chmod (2) casi seguro que habrá una mejor opción que pasar por toda la molestia de tenedor () ing y exec () ing.
Es cierto que la mayor parte de que sin problemas es la parte tenedor (), y si el programa no necesita hacer nada más después de la llamada exec (), a continuación, sólo se ejecuta una de las exec funciones de la familia () sin bifurcación es razonablemente bien (para un ejercicio en el uso de exec (), que es).