summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarson Fleming <cflems@cflems.net>2026-08-27 00:25:38 -0400
committerCarson Fleming <cflems@cflems.net>2026-08-27 00:25:53 -0400
commitfe466f1d1e460d25d92db30a38cef8bf12e5adab (patch)
treeb648d0992e14cc1505dce1cea8775e66efb077d7
downloadforkit-fe466f1d1e460d25d92db30a38cef8bf12e5adab.tar.gz
yup it's 25 lines of code love to see it
-rw-r--r--.gitignore1
-rw-r--r--README19
-rw-r--r--forkit.c24
-rw-r--r--makefile8
4 files changed, 52 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..567609b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+build/
diff --git a/README b/README
new file mode 100644
index 0000000..6a27167
--- /dev/null
+++ b/README
@@ -0,0 +1,19 @@
+forkit
+______
+
+This is slightly more convenient than:
+```bash
+nohup whatever &>/dev/null </dev/null &
+```
+
+Usage:
+```bash
+forkit whatever &>/dev/null </dev/null
+```
+You can also not pipe redirect any streams you like into /dev/null, that's your prerogative.
+
+Installation:
+```bash
+make
+sudo make install
+```
diff --git a/forkit.c b/forkit.c
new file mode 100644
index 0000000..4fe062f
--- /dev/null
+++ b/forkit.c
@@ -0,0 +1,24 @@
+#include <stdio.h>
+#include <unistd.h>
+
+int main (int argc, char** argv) {
+ if (argc < 2) {
+ fprintf(stderr, "forkit: give something to fork\n");
+ return 1;
+ }
+
+ pid_t child_pid = fork();
+ if (child_pid < 0) {
+ perror("forkit");
+ return 1;
+ }
+
+ if (child_pid > 0) {
+ printf("forkit: great success\n");
+ return 0;
+ }
+
+ execvp(argv[1], &argv[1]);
+ perror("forkit");
+ return 1;
+}
diff --git a/makefile b/makefile
new file mode 100644
index 0000000..b4994db
--- /dev/null
+++ b/makefile
@@ -0,0 +1,8 @@
+all:
+ mkdir -p build
+ cc forkit.c -o build/forkit
+install:
+ cp build/forkit /usr/local/bin
+ chmod 0755 /usr/local/bin/forkit
+clean:
+ rm -rf build