fork函数测试

在process_child_task()函数中,遇到fork()返回值异常情况,当父进程被命令行杀死时,父子进程返回值均为0。然而,通过定义新变量pid来接收fork()返回值,能正确获取到不同进程的标识。
摘要由CSDN通过智能技术生成
//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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值