#include "pipe.h" #include #include #include #include #include FILE *named_pipe; void init_pipe() { mkfifo(PIPE_PATH, 0666); named_pipe = fopen(PIPE_PATH, "r"); } void await_change() { char buff[1024]; while (1) { if (!fgets(buff, sizeof(buff), named_pipe)) { fclose(named_pipe); named_pipe = fopen(PIPE_PATH, "r"); // This blocks, 0% CPU, yay continue; } break; } printf("Received: %s\n", buff); int argc = 0, chr_on = 0, i = 0; char argv[4][256]; while (argc < 4) { char chr = buff[i]; if (chr == '\0') { break; } if (isspace(chr)) { if (chr_on == 0) { i++; continue; } argv[argc][chr_on] = '\0'; argc++; chr_on = 0; } else { argv[argc][chr_on] = chr; chr_on++; } i++; } make_change(argv, argc); } void make_change(char argv[MAX_ARGS][MAX_ARG_LEN], int argc) { printf("Making change with:\n"); for (int i = 0; i < argc; i++) { printf("Arg %d: %s\n", i + 1, argv[i]); } }