c_cpp 自力で,HTTPサーバーをÇ言语で1から作る!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 自力で,HTTPサーバーをÇ言语で1から作る!相关的知识,希望对你有一定的参考价值。
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <signal.h>
#include <string.h>
typedef void (*sighandler_t)(int);
/*
* 標準エラー出力にフォーマットしたものを出力して、プロセスを終了する。
* @vars (char *fmt, ...)
* @example log_exit("ERROR %d", 1);
*/
static void log_exit(char *fmt, ...){
va_list ap;
va_start(ap, fmt);
vfprintf(stderr, fmt, ap);
fputc('\n', stderr);
va_end(ap);
exit(1);
}
/*
* メモリを確保する。確保できなければ標準エラーに出力をして、終了する。
*/
static void* xmalloc(size_t sz){
void *p;
p = malloc(sz);
if(!p) log_exit("faild to allocate memory.");
return p;
}
/*
* ソケット接続が切れた切れた時の一連の流れ
* signal_exit, trap_signal, install_signal_handlers
* 主に呼び出すのは **install_signal_handlers** で、
* 他の関数は内部で使われる。
*/
static void signal_exit(int sig){
log_exit("exit by signal %d", sig);
}
static void trap_signal(int sig, sighandler_t handler){
int errno = 2;
struct sigaction act;
act.sa_handler = handler;
sigemptyset(&act.sa_mask);
act.sa_flags = SA_RESTART;
if(sigaction(sig, &act, NULL) < 0)
log_exit("sigaction() faild: %s", strerror(errno));
}
static void install_signal_handlers(void){
trap_signal(SIGPIPE, signal_exit);
}
int main(void){
return 0;
}
以上是关于c_cpp 自力で,HTTPサーバーをÇ言语で1から作る!的主要内容,如果未能解决你的问题,请参考以下文章
sh ncとcurlでwebクラアント/サーバ
markdown サーバーの环境を変えないでJQコマンドっぽいことをやる方法を考える
text node.js中で简易サーバを构筑
markdown MAMPで“お使いのサーバーのPHPではWordPressに必要なMySQL拡张を利用できないようです。”
ruby 2015年就职情报サイトから,企业名で検索して绍介ページURLを取得する。
python サーバー上でエラー确认