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 サーバー上でエラー确认