summaryrefslogtreecommitdiff
path: root/exec/exec.c
diff options
context:
space:
mode:
Diffstat (limited to 'exec/exec.c')
-rw-r--r--exec/exec.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/exec/exec.c b/exec/exec.c
new file mode 100644
index 0000000..f3ee85e
--- /dev/null
+++ b/exec/exec.c
@@ -0,0 +1,22 @@
+#define _POSIX_SOURCE
+#include <errno.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#define NOT_RUN (126)
+#define NOT_FOUND (127)
+
+int main(int argc, char *argv[])
+{
+ if (argc < 2 || argv == NULL) {
+ fprintf(stderr, "%s: missing operands\n", argv[0]);
+ return NOT_RUN;
+ }
+
+ execv(argv[1], argv + 1);
+ perror(argv[0]);
+ if (errno == ENOENT) {
+ return NOT_FOUND;
+ }
+ return NOT_RUN;
+}