在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(名字后面补充)