- 论坛徽章:
- 0
|
源码:
extern char *tmbuf;
char* time_now(void)
{
time_t t;
struct tm tm;
if (time(&t) == (time_t) -1)
return NULL;/*work quietly*/
if (localtime_r(&t, &tm) == NULL)
return NULL;/*work quietly*/
/*发生段错误--->*/ bzero(tmbuf, TMBUFLEN);
sprintf(tmbuf, "%04d%02d%02d %02d:%02d:%02d", tm.tm_year + 1900, tm.tm_mon, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec);
return tmbuf;
}
这是一个打印当前日期和时间的函数。tmbuf是一个在程序中的全局变量,当然,不在这个文件里。而在主文件里:
char tmbuf[TMBUFLEN];
int main(void)
{
sigset_t current_sig_mask;
PINFO("Staring the initial job!");
……
……
但问题是,声明 extern char *tmbuf;压根没用,会出现段错误(估计狗日的做了非礼仍视的事情。用gdb跟踪,到标记的地方发生了段错误)。但是,换成extern char tmbuf[TMBUFLEN];就没问题了。兄弟们帮俺看看…… |
|