//common.h
#ifndef COMMON_H
#define COMMON_H
#include <stdio.h>
#define NVR_MONITOR_FILE 1
#if NVR_MONITOR_FILE
#define LOG_PATH ""
#define LOG_FILE_NAME "nvr_monitor.log"
#endif
#define PRINT_NONE "\033[m"
#define PRINT_RED "\033[0;32;31m"
#define PRINT_LIGHT_RED "\033[1;31m"
#define PRINT_GREEN "\033[0;32;32m"
#define PRINT_BLUE "\033[0;32;34m"
#define PRINT_YELLOW "\033[1;33m"
#define PRINT_BROWN "\033[0;33m"
#define PRINT_PURPLE "\033[0;35m"
#define PRINT_CYAN "\033[0;36m"
#define NVR_MONITOR_DEBUG
#ifdef NVR_MONITOR_DEBUG
#define NVR_MONITOR_LOG(fmt,...) do{\
printf("[NVR_MONITOR_LOG:%s,%s,%d]" fmt PRINT_NONE"\n",__FUNCTION__,__FILE__,__LINE__ , ##__VA_ARGS__);\
FILE *fp=fopen(LOG_PATH""LOG_FILE_NAME,"a+");\
if(!fp)break;\
if(!NVR_MONITOR_FILE)break;\
fprintf(fp,"[NVR_MONITOR_LOG:%s,%s,%d]" fmt "\n",__FUNCTION__,__FILE__,__LINE__ , ##__VA_ARGS__);\
fclose(fp);\
}while(0);
#else
#define NVR_MONITOR_LOG(fmt,...)
#endif
void process_task_main();
#endif // COMMON_H
//common.cpp
#include <common.h>
//
#include <stdlib.h> //signal
#include <sys/types.h> //pid_t
#include <sys/wait.h> //wait
//above is for signal model
#include <unistd.h> //sleep
//declare functions
static void parent_message_handler(int signal_num);
static void child_message_handler(int signal_num);
static void child_exit_handler(int signal_num);
static int process_init();
static void process_handle_print();
static void process
fork函数测试
最新推荐文章于 2020-11-01 19:54:50 发布
在process_child_task()函数中,遇到fork()返回值异常情况,当父进程被命令行杀死时,父子进程返回值均为0。然而,通过定义新变量pid来接收fork()返回值,能正确获取到不同进程的标识。
摘要由CSDN通过智能技术生成