#include #include #include /* getenv, exit */ #include #include #include "common.h" #include "message.h" extern char statrate_task[]; extern pid_t StatRatepid; extern STATUS_TABLE *status_table; void start_statrate(int i) { int rcode; pid_t pid; // start the Stats/Rates task pid = fork(); if (pid == -1) { sprintf(message_buffer, "fork failed %d - This must be fixed - exiting.", errno); report_message(MSG_FAILURE); exit(1); } if (pid == 0) { // this is the child process - use exec to overlay the task code rcode = execl(statrate_task, statrate_task, NULL); sprintf(message_buffer, "StatsRates task returned %d - %s.", errno, strerror(errno)); report_message(MSG_FAILURE); return; } StatRatepid = pid; status_table->statrate_pid = pid; sprintf(message_buffer, "Stats/Rates task has pid %d", pid); report_message(MSG_INFORMATION); return; }