From 14bdd63e40e913dfce20190de923d2aca0d1d45a Mon Sep 17 00:00:00 2001 From: verdant Date: Tue, 28 Jul 2026 20:36:13 +0800 Subject: Add spawn wrapper for executing external commands Inctroduce process.c and process.h providing spawn() function to fork a child process and execute commands via execvp(). Return -1 on invalid arguments or fork failure, and 0 on success. --- src/process.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/process.c (limited to 'src/process.c') diff --git a/src/process.c b/src/process.c new file mode 100644 index 0000000..3dd93f0 --- /dev/null +++ b/src/process.c @@ -0,0 +1,28 @@ +#include "process.h" +#include "err.h" +#include "log.h" +#include +#include + +int +spawn(char **argv) +{ + pid_t pid; + + if (!argv[0] || *argv[0] == '\0') { + log_write(LOG_ERR, "Invalid argv"); + return -1; + } + + if ((pid = fork()) < 0) { + log_write(LOG_ERR, "fork error"); + } else if (pid == 0) { + if (execvp(argv[0], argv) < 0) { + die("exec error"); + } + } else { + wait(NULL); + } + + return 0; +} -- cgit v1.2.3