From 1445f8e759a0409f561e2c811960fd65b1b64611 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 17 Jun 2025 15:02:05 +0200 Subject: initial --- addjob.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 addjob.c (limited to 'addjob.c') diff --git a/addjob.c b/addjob.c new file mode 100644 index 0000000..db6a9d3 --- /dev/null +++ b/addjob.c @@ -0,0 +1,41 @@ +#include +#include +#include +#include +#include +#include +#include +#include "shared.h" + +int main(int argc, char *argv[]) { + if (argc != 2) { + fprintf(stderr, "Usage: %s \n", argv[0]); + return 1; + } + + int shm_fd = shm_open(SHM_NAME, O_RDWR, 0666); + if (shm_fd == -1) { + perror("shm_open"); + return 1; + } + + JobQueue *queue = mmap(NULL, sizeof(JobQueue), PROT_READ | PROT_WRITE, MAP_SHARED, shm_fd, 0); + if (queue == MAP_FAILED) { + perror("mmap"); + return 1; + } + + pthread_mutex_lock(&queue->mutex); + if ((queue->tail + 1) % MAX_JOBS == queue->head) { + printf("[addjob] Queue full\n"); + } else { + strncpy(queue->jobs[queue->tail], argv[1], MAX_PATH); + queue->tail = (queue->tail + 1) % MAX_JOBS; + printf("[addjob] Queued job: %s\n", argv[1]); + } + pthread_mutex_unlock(&queue->mutex); + + munmap(queue, sizeof(JobQueue)); + close(shm_fd); + return 0; +} -- cgit v1.2.3