The another.log file only record the parent process's print info, Did I lack of some func revoke?
#include "tlog.h"
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
#include <time.h>
#define PID_IS_CHILD 0
tlog_log *log = NULL;
int printlog()
{
int i = 0;
tlog_printf(log, "This is child log stream %d\n", i++);
while (i<1000)
{
tlog_printf(log, "This is child log stream %d\n", i++);
usleep(10);
}
return 0;
}
int paraentprint()
{
int i = 0;
while (i<10000)
{
tlog_printf(log, "This is paraent log stream %d\n", i++);
usleep(10);
}
return 0;
}
int main(int argc, char *argv[])
{
/* init and output log message */
tlog_init("example.log", 1024 * 1024, 8, 0, 0);
//tlog(TLOG_INFO, "This is a log message.\n");
/* c++ cout style log */
//tlog_info << "This is a c++ style log.\n";
/* open another log file, and output message*/
log = tlog_open("another.log", 1024*1024 * 1024, 8, 0, TLOG_SEGMENT);
tlog_printf(log, "This is a separate log stream\n");
/* c++ style log */
tlog_out(log) << "This is a separate c++ log stream\n";
int pid = fork();
if (pid == PID_IS_CHILD)
{
fprintf(stderr, "child func start\n");
printlog();
}
else if (pid < 0)
{
tlog_printf(log, "bad func start\n");
}
else
{
tlog_printf(log, "is parent func start\n");
}
paraentprint();
/* close log stream */
sleep(100);
tlog_close(log);
/* flush pending message, and exit tlog */
tlog_exit();
return 0;
}