static void* logsvc(void *arg) { static char buff[MARK_SIZE + LOG_MSGSZ]; int type, size, sock = ipc_open(LOG_SERVER);/*创建一个socket svr*/ if (sock < 0) EXIT("Failed to create LOG server port"); prctl(PR_SET_NAME, "LOGSVC");/*设置LOGSVC进程*/ sync_post(arg);/*同步机制,线程同步*/ while (1) {/*udp,根据sock获取buff数据*/ size = ipc_recv(sock, 0, buff + MARK_SIZE, LOG_MSGSZ, -1); if (size > 0 && buff[MARK_SIZE] < LOGLV_INVAL) { mark(buff, type = buff[MARK_SIZE]); push(buff, type, size + MARK_SIZE);/*循环打印buff数据,定义中有printf*/ } } return 0; }
时间: 2024-04-27 12:25:36 浏览: 114
argmin.rar_argmin_matlab argmin
4星 · 用户满意度95%
这段代码是一个线程函数,用于实现一个日志服务。它创建了一个名为LOGSVC的进程,并使用ipc_open函数创建了一个socket。然后,它使用sync_post函数进行同步,然后进入一个无限循环,在循环中使用ipc_recv函数接收数据,并将数据加入到buff中。如果接收到的数据大小大于0并且接收到的数据类型是有效的,则使用mark函数进行标记,并使用push函数将数据推送到输出缓冲区中。
阅读全文