Je suis en train de faire une implémentation de shell mineur en c, et je suis bloqué. Je veux pouvoir rediriger stdin
et stdout
, mais je suis confus. Dans mon shell, lorsque je veux démarrer un programme, j'utilise la fonction execvp
. Maintenant, je voudrais être en mesure de rediriger stdout
, donc si je cours un autre processus, la sortie devrait être redirigé vers un fichier au lieu de l'écran.freopen et execvp dans c
est un exemple de code ici:
pid_t pid;
// Child process
pid = vfork();
if((pid == 0)){
freopen("myfile.txt", "w", stdout);
char* arr[3];
arr[0] = "cat";
arr[1] = "someFileToCat.txt";
arr[2] = NULL;
execvp("cat", arr);
fclose(stdout);
}
Il n'imprime cependant dans le terminal, et non dans le fichier.
duplication possible de [Redirection de la sortie exec vers un tampon ou un fichier] (http://stackoverflow.com/questions/2605130/redirecting-exec-output-to-a-buffer-or-file) – ChrisF