0
私はプログラミングの知識のない、lighttpdの全く新しい学生です。私は単純な "Hello world"プラグインの構築方法を理解しようとしています。私は本からコードを見つけました。コードは次のとおりです。混乱したlog_trace関数
#includes "base.h"
#includes "log.h"
#includes "plugin.h"
#ifdef HAVE_CONFIG_H
#includes "config.h"
#endif
typedef struct { PLUGIN_DATA; /* no config */ } plugin_data;
INIT_FUNC(mod_helloworld_init) {
plugin_data *p;
UNUSED(srv);
p = calloc(1, sizeof(*p));
log_trace("Hello, World!");
return p;
}
FREE_FUNC(mod_helloworld_free) {
plugin_data *p = p_d;
UNUSED(srv);
if (p) free(p);
return HANDLER_GO_ON;
}
int mod_helloworld_plugin_init(plugin *p) {
p->version = LIGHTTPD_VERSION_ID;
p->name = buffer_init_string("helloworld");
p->init = mod_helloworld_init;
p->cleanup = mod_helloworld_free;
p->data = NULL;
return 0;
}
上記のコードでは、「log_trace」という関数がどのように機能しているかわかりません。私はそれがC++のあらかじめ定義された関数ではないことを知っています。それはプログラマ自身が書かなければならないようです。どのように機能しているのか説明できますか?
は_LOG_H_ の#define _LOG_H_ の#include "server.h" /*代わりにそれのためには/ dev/nullのを得るためにFDを閉じると_try_ #ifndefの次 が含まれています。 *成功した場合は0を返し、失敗した場合は-1を返します(fdはすべてのケースで閉じられます)。 */ int openDevNull(int fd); #define WP()log_error_write(srv、__FILE__、__LINE__、 ""); int open_logfile_or_pipe(サーバ* srv、const char * logfile); int log_error_open(server * srv); int log_error_close(server * srv); int log_error_write(サーバ* srv、const char * filename、符号なしint行、const char * fmt、...); int log_error_cycle(server * srv); #endif –
私はそれにlog_traceについては何も見ません。 –