diff options
Diffstat (limited to 'myfind/myexecvp/myexecvp.c')
| -rw-r--r-- | myfind/myexecvp/myexecvp.c | 26 |
1 files changed, 26 insertions, 0 deletions
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; + } +} |
