Mon programme exécute essentiellement un fichier exécutable avec des arguments de ligne de commande. Un processus enfant est forké et la sortie du processus enfant est prise dans le fichier "filename".Le fichier ne peut être ouvert que par l'utilisateur root. Permission autorisée, je suppose
Le problème est que le fichier est fait et les données sont écrites, mais il ne peut être ouvert par l'utilisateur root .. Comment le rendre lisible à l'utilisateur qui a invoqué le programme?
Le code est le suivant: -
#include<stdio.h>
#include<string.h> //strcpy() used
#include<malloc.h> //malloc() used
#include<unistd.h> //fork() used
#include<stdlib.h> //exit() function used
#include<sys/wait.h> //waitpid() used
#include<fcntl.h>
int main(int argc, char **argv)
{
char *command;
char input[256];
char **args=NULL;
char *arg;
int count=0;
char *binary;
pid_t pid;
int fdw;
printf("Enter the name of the executable(with full path)");
fgets(input,256,stdin);
command = malloc(strlen(input));
strncpy(command,input,strlen(input)-1);
binary=strtok(command," ");
args=malloc(sizeof(char*));
args[0]=malloc(strlen(binary)+1);
strcpy(args[0],binary);
while ((arg=strtok(NULL," "))!=NULL)
{
if (count%10 == 0) args=realloc(args,sizeof(char*)*10);
count++;
args[count]=malloc(strlen(arg));
strcpy(args[count],arg);
}
args[++count]=NULL;
if ((fdw=open("filename",O_WRONLY|O_EXCL|O_CREAT|0700)) == -1)
perror("Error making file");
close(1);
dup(fdw);
if ((pid = fork()) == -1)
{
perror("Error forking...\n");
exit(1);
}
if (pid == 0) execvp(args[0],&args[0]);
else
{
int status;
waitpid(-1, &status, 0);
}
return 0;
}
Que dit ls -l lorsqu'il est pointé sur le fichier? – bmargulies
------ xr-- 1 shadyabhi shadyabhi 7342 2010-02-03 01:39 nom de fichier –