linux as5 系统上运行程序退出
void send_clock(i_year,i_month,i_day)int i_year,i_month,i_day;
{
unsigned char tempmsg[17];
struct tm *inittptr, *tptr;
time_t initclock, clock;
int year, safeday,i;
// 计算安全天数起始 initclock
inittptr->tm_year = i_year-1900; // 安全天数起始年份,从1900年开始;(现为2004年)
inittptr->tm_mon = i_month-1; // 安全天数起始月份,从0月开始,11月结束;(现为8月)
inittptr->tm_mday = i_day; // 安全天数日期
inittptr->tm_hour = 0; // 安全天数时
inittptr->tm_min = 0; // 安全天数分
inittptr->tm_sec = 0; // 安全天数秒
initclock = mktime(inittptr);
printf("safeday initclock = %d\n", initclock);
tempmsg[0] = HEAD1;
tempmsg[1] = HEAD2;
tempmsg[2] = 0x25;
tempmsg[3] = 0xff;
tempmsg[4] = 0x0b;
clock = time((time_t *)NULL);
tptr = localtime(&clock);
printf("date : clock = %d; %d.%d.%d , %d ,%d.%d.%d \n", clock, tptr->tm_year,tptr->tm_mon+1,
tptr->tm_mday,tptr->tm_wday,tptr->tm_hour,tptr->tm_min,
tptr->tm_sec);
safeday = (clock - initclock)/(24*3600);
year = tptr->tm_year + 1900;
tempmsg[5] = HtoD(year / 100);
tempmsg[6] = HtoD(year % 100);
tempmsg[7] = HtoD(tptr->tm_mon + 1);
tempmsg[8] = HtoD(tptr->tm_mday);
tempmsg[9] = HtoD(tptr->tm_wday);
tempmsg[10] = HtoD(tptr->tm_hour);
tempmsg[11] = HtoD(tptr->tm_min);
tempmsg[12] = HtoD(tptr->tm_sec);
tempmsg[13] = HtoD(safeday/10000);
tempmsg[14] = HtoD((safeday%10000)/100);
tempmsg[15] = HtoD(safeday%100);
tempmsg[16] = LPC_check(tempmsg, 16);
drvSendMsg(portInfo.fd, tempmsg, 17, 2);
for (i=0;i<18;i++)
printf(" %x ", tempmsg[i]);
printf("\n");
}
程序如上时,运行到红色标注段落时就退出,无core产生,
最后将struct tm *inittptr, *tptr; 修改为struct tm inittptr, *tptr;
initclock = mktime(inittptr); 修改为initclock = mktime(&inittptr);后程序运行正常。
虽然问题解决了,但疑问仍在,因为这段程序在别的地方用过,只是这次操作系统不一样是linux as5的系统,之前是as4的系统。
非常感谢!!!