fifousr.c
来自「Source code for an Numeric Cmputer」· C语言 代码 · 共 75 行
C
75 行
/* fifousr.c - user-side FIFO code*/#include <stdio.h>#include <signal.h>#include <setjmp.h>#include <sys/time.h>#include "rtapi.h"#include "common.h" /* FIFO_KEY, FIFO_SIZE */static int module;static jmp_buf env;static void quit(int sig){ longjmp(env, 1);}int main(){ int fifo; char buffer[FIFO_SIZE + 1]; int nchars; int retval; module = rtapi_init("FIFO_USR"); if (module < 0) { rtapi_print_msg(RTAPI_MSG_ERR, "fifousr main: rtapi_init returned %d\n", module); return -1; } /* open the fifo */ fifo = rtapi_fifo_new(FIFO_KEY, module, FIFO_SIZE, 'R'); if (fifo < 0) { rtapi_print_msg(RTAPI_MSG_ERR, "fifousr main: rtapi_fifo_new returned %d\n", fifo); rtapi_exit(module); return -1; } if (1 == setjmp(env)) goto END; signal(SIGINT, quit); printf("waiting for fifo data, ctrl-C to quit\n"); while (1) { nchars = rtapi_fifo_read(fifo, buffer, FIFO_SIZE); if (nchars <= 0) { rtapi_print_msg(RTAPI_MSG_ERR, "fifousr main: rtapi_fifo_read returned %d\n", nchars); } else { buffer[nchars] = '\0'; rtapi_print_msg(RTAPI_MSG_INFO, "fifousr main: read %d chars: '%s'\n", nchars, buffer); } } END: rtapi_print_msg(RTAPI_MSG_INFO, "shutting down\n"); retval = rtapi_fifo_delete(fifo, module); if (retval != RTAPI_SUCCESS) { rtapi_print_msg(RTAPI_MSG_ERR, "fifousr main: rtapi_fifo_delete returned %d\n", retval); rtapi_exit(module); return -1; } return rtapi_exit(module);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?