correction code
This commit is contained in:
@@ -42,4 +42,5 @@ printf("%d\n", r1);
|
|||||||
|
|
||||||
int r2 = execute_me("wrong", argv);
|
int r2 = execute_me("wrong", argv);
|
||||||
printf("%d\n", r2);
|
printf("%d\n", r2);
|
||||||
}*/
|
}
|
||||||
|
*/
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ void piped(){
|
|||||||
char buffer[2048];
|
char buffer[2048];
|
||||||
read(fd[0], buffer, sizeof(buffer));
|
read(fd[0], buffer, sizeof(buffer));
|
||||||
|
|
||||||
printf("My child sends me : %s\n", buffer);
|
printf("My child sends me : %s", buffer);
|
||||||
close(fd[0]);
|
close(fd[0]);
|
||||||
wait(NULL);
|
wait(NULL);
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ int fibo (int n){
|
|||||||
}
|
}
|
||||||
int wait_child(int x){
|
int wait_child(int x){
|
||||||
|
|
||||||
if(x < 0) return -1;
|
if(x < 0) return 1;
|
||||||
|
|
||||||
int wstatus;
|
int wstatus;
|
||||||
pid_t pid = fork();
|
pid_t pid = fork();
|
||||||
|
|||||||
@@ -25,18 +25,28 @@ int duper(char **argv, char *output){
|
|||||||
int wstatus;
|
int wstatus;
|
||||||
pid_t pid = fork();
|
pid_t pid = fork();
|
||||||
|
|
||||||
if(pid < 0) return 1;
|
if(pid < 0) {
|
||||||
|
|
||||||
|
printf("Something went wrong in duper.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
//Child
|
//Child
|
||||||
else if (pid == 0){
|
else if (pid == 0){
|
||||||
|
|
||||||
// ouverture en mode write
|
// ouverture en mode write
|
||||||
FILE *file = fopen(output, "w");
|
FILE *file = fopen(output, "w");
|
||||||
if(!file) exit(-1);
|
if(!file) {
|
||||||
|
printf("Something went wrong in duper.\n");
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
int fno = fileno(file);
|
int fno = fileno(file);
|
||||||
if(dup2(fno, STDOUT_FILENO) == -1) exit(-1);
|
if(dup2(fno, STDOUT_FILENO) == -1){
|
||||||
|
|
||||||
|
printf("Something went wrong in duper.\n");
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
fclose(file);
|
fclose(file);
|
||||||
|
|
||||||
|
|||||||
@@ -65,17 +65,21 @@ int exec_cmd(char** args){
|
|||||||
int wstatus;
|
int wstatus;
|
||||||
pid_t pid = fork();
|
pid_t pid = fork();
|
||||||
|
|
||||||
if (pid < 0) exit(-1);
|
if (pid < 0){
|
||||||
|
free(args);
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
// Child
|
// Child
|
||||||
else if (pid == 0){
|
else if (pid == 0){
|
||||||
|
|
||||||
if(strcmp(args[0] , "run") != 0) exit(-1);
|
//if(strcmp(args[0] , "run") != 0) exit(-1);
|
||||||
|
|
||||||
if(execvp(args[1], args + 1) != 0) exit(-1);
|
//on execute la commande et on return son code de fin
|
||||||
exit(0);
|
exit(execvp(args[1], args + 1));
|
||||||
|
|
||||||
//if(execvp(args[0], args) == -1) exit(-1);
|
//if(execvp(args[1], args + 1) != 0) exit(-1);
|
||||||
//exit(0);
|
//exit(0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Uncle... You're again ! Oh it's not my uncle it's my daddy !
|
//Uncle... You're again ! Oh it's not my uncle it's my daddy !
|
||||||
|
|||||||
Reference in New Issue
Block a user