commit f08ec5d373ed204ee5bee50d9b384f0f0a5fa712 Author: Jimmy GALLAND Date: Sun Jul 27 18:14:57 2025 +0200 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0e38e1b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +qemu-system-x86_64 diff --git a/compile.sh b/compile.sh new file mode 100644 index 0000000..6bf7488 --- /dev/null +++ b/compile.sh @@ -0,0 +1 @@ +docker run --rm -v "$PWD":/src -w /src gcc gcc launcher.c -o qemu-system-x86_64 diff --git a/launcher.c b/launcher.c new file mode 100644 index 0000000..7850fb7 --- /dev/null +++ b/launcher.c @@ -0,0 +1,38 @@ +#include +#include +#include +#include +#include +#include + + +int main(int argc, char *argv[]) { + + // Créer le processus enfant + + int total_args = argc + 3; // "-k", "fr", NULL + + char **child_argv = malloc(sizeof(char *) * total_args); + if (!child_argv) { + perror("malloc"); + exit(EXIT_FAILURE); + } + + child_argv[0] = "/var/packages/Virtualization/target/bin/qemu-system-x86_64"; // nom du programme exécuté + //child_argv[0] = "/bin/echo"; + child_argv[1] = "-k"; + child_argv[2] = "fr"; + + // Copier les arguments passés à launcher + for (int i = 1; i < argc; i++) { + child_argv[i + 2] = argv[i]; + } + + child_argv[total_args - 1] = NULL; // terminaison NULL + + execv(child_argv[0], child_argv); + + // Si exec échoue + perror("execl a échoué"); + exit(EXIT_FAILURE); +}