现在的位置: 首页 > 综合 > 正文

关于LOG

2013年12月02日 ⁄ 综合 ⁄ 共 569字 ⁄ 字号 评论关闭

main函数中重定向stderrfile时候

    sprintf(stderrfile,"%s/log/%s_%s.log, getenv("BANKDIR"), argv([0]), argv[2]);
    freopen(stderrfile, "w", stderr);

    比如程序名为Blnintp,那么运行时候 Blnintp 3 1 就会有生成日志 $(BANKDIR)/log/Blnintp_1.log
    $(BANKDIR)为环境变量里面的BANKDIR内容

    但是这样写有限制,就是运行Blnintp的时候是在当前路径下直接使用命令 Blnintp 3 1,但是如果运行此可执行程序用的全路径名的话就会有错误生成,比如Blnintp程序的全路径为/usr/bin/Blnintp

    那么这段语句应该写成:
    sprintf(stderrfile,"%s/log/%s_%s.log, getenv("BANKDIR"), basename(argv([0])), argv[2]);
    freopen(stderrfile, "w", stderr);

    这个basename会去掉路径,只保留命令,这样,同样生成日志 $(BANKDIR)/log/Blnintp_1.log

  注意,这个basename函数需要加入.h(名字后面补充)

抱歉!评论已关闭.