diff options
| author | Martial Simon <msimon_fr@hotmail.com> | 2025-09-15 01:07:58 +0200 |
|---|---|---|
| committer | Martial Simon <msimon_fr@hotmail.com> | 2025-09-15 01:07:58 +0200 |
| commit | 967be9e750221ab2ab783f95df79bb26d290a45e (patch) | |
| tree | 6802900a5e975f9f68b169f0f503f040056d6952 /myfind/myexecvp | |
Diffstat (limited to 'myfind/myexecvp')
| -rw-r--r-- | myfind/myexecvp/Makefile | 17 | ||||
| -rw-r--r-- | myfind/myexecvp/myexecvp.c | 26 |
2 files changed, 43 insertions, 0 deletions
diff --git a/myfind/myexecvp/Makefile b/myfind/myexecvp/Makefile new file mode 100644 index 0000000..f5ae43f --- /dev/null +++ b/myfind/myexecvp/Makefile @@ -0,0 +1,17 @@ +CC = gcc CFLAGS = -std = c99 - pedantic - Werror - Wall - Wextra + - Wvla + + SRC = myexecvp.c OBJ = $(SRC + :.c =.o) + + all + : $(OBJ) $(CC) + - o myexecvp $(OBJ) + + $(OBJ) + : $(SRC) + + .PHONY + : clean + + clean : $(RM) $(OBJ) myexecvp diff --git a/myfind/myexecvp/myexecvp.c b/myfind/myexecvp/myexecvp.c new file mode 100644 index 0000000..30cd519 --- /dev/null +++ b/myfind/myexecvp/myexecvp.c @@ -0,0 +1,26 @@ +#include <sys/types.h> +#include <sys/wait.h> +#include <unistd.h> + +int main(int argc, char **argv) +{ + if (argc < 2) + return 1; + + pid_t child = fork(); + if (child == -1) + { + return 1; + } + else if (child == 0) + { + execvp(argv[1], argv + 1); + return 1; + } + else + { + int retval; + waitpid(child, &retval, 0); + return (retval == 0) ? 0 : 1; + } +} |
