タグ

cに関するseiunskyのブックマーク (11)

  • cgoを使ったCとGoのリンクの裏側 (1) - Qiita

    cgoを用いるとCのライブラリをGoバイナリにリンクしたり、Goパッケージの一部をCで書いたりできる。更にGo 1.5以降では、GoのパッケージをC用の静的ライブラリまたは動的ライブラリにまとめておいて、Cからリンクすることもできる。 これらの機能はすべてgo buildコマンドに統合されているので、普段は特にcgoを使っていることを意識することは少ない。しかし、pure goのコードのビルドにしたところでその裏側ではコンパイラ、アセンブラ、リンカが走っているわけである。ではcgoの場合をこの水準で見るとどのような処理が行われているのだろうか。 要は、gcc(1)の裏ではcc1, as, collect2なんかが走ってるよね、cgoではどうなってるの? という話が稿の話題である。 なお、Goのオブジェクトファイルがプラットフォーム独立な(ELFとかではない)フォーマットであることや、Go

    cgoを使ったCとGoのリンクの裏側 (1) - Qiita
    seiunsky
    seiunsky 2016/04/11
  • Learning C with gdb - Blog - Recurse Center

    Coming from a background in higher-level languages like Ruby, Scheme, or Haskell, learning C can be challenging. In addition to having to wrestle with C’s lower-level features like manual memory management and pointers, you have to make do without a REPL. Once you get used to exploratory programming in a REPL, having to deal with the write-compile-run loop is a bit of a bummer. It occurred to me r

    Learning C with gdb - Blog - Recurse Center
    seiunsky
    seiunsky 2012/08/28
    やばい懐かしい
  • Cでのポインタの読み方

    Cでのポインタの読み方 Cのポインタの読み方は、ルールを知らないと摩訶不思議です。 ルールを覚えれば、 int (*p[5])[3]; char (*(*fp)(void))(int); なんてのも解読する事ができます。 大事な前程 ポインタを読む際には、「英語で読む」必要があります。 「え~、英語~」 と思う方もいるかもしれませんが、逆に日語で読む方が大変です。 基ルール ルール 後置演算子が優先。 関数の() 配列の[] 前置はあとで。 要は、「後ろに何かあったら、後ろが優先」です。 演算子の英語での読み方 * pointer to ... () function returning ... [] array of ... Lesson 1 まず、演算子が単独で出てくる場合です。 Lesson 1-1 pointer to ... int *p; これは、まずpを見ましょう。 i

  • Apacheモジュールの作成とgdbとloggerでのデバッグ方法 - よねのはてな

    ApacheのFilterモジュールを作った話しをしたらid:c9katayamaに情報公開しろと言われたままでしたので公開します。 C言語の勉強しようかな、Apache2.xのモジュールを作ってみようかな、gdb使ってデバッグしてみようかなと考えてた人にお勧めです。 JavaでのServletの開発経験のある人であれば、Filterの処理の動きやリクエストコンテキストの考え方は分かり易いはずなので、エントリを読み終わる頃にはApacheのモジュールをgdbでデバッグしながら作る事が出来るはずです。 mod_orzを作成 今回はmod_orzというApacheモジュールを作成します。 Apacheモジュールを作成する際には、apxsというモジュール開発用のコマンドを使用しテンプレートを作ります。 # apxs -g -n orz Creating [DIR] orz Creating [F

    Apacheモジュールの作成とgdbとloggerでのデバッグ方法 - よねのはてな
    seiunsky
    seiunsky 2009/05/27
    思ったよりも簡単ですね! これは空前の apache module ブームが来るかも!
  • システムプログラム(第5週):シグナル

    電子・情報工学系 追川 修一 <shui @ cs.tsukuba.ac.jp> このページは,次の URL にあります. http://www.coins.tsukuba.ac.jp/~syspro/2005/No5.html システムプログラムのホームページ(2005年度) http://www.coins.tsukuba.ac.jp/~syspro/2005/ からもリンクが張ってあります. 今日の内容 シグナル:周辺装置,入出力,ポーリング,割込み,ソフトウェア割込み,シグナル シグナル 概要 プロセスは,オペレーティングシステムがコンピュータ(プロセッサ)を抽象化し,使いやすくしたものである. コンピュータは入出力機器からのイベント通知を割り込みという仕組みで受け取る. プロセスには,割り込みに相当するイベント通知のメカニズム(ソフトウェア割り込み)として,シグナルが提供されてい

    seiunsky
    seiunsky 2009/03/19
    sigaction のサンプル
  • Manpage of SIGACTION

    seiunsky
    seiunsky 2009/03/19
    SIGNAL 受信の関数
  • Double/Faker Diary | C言語でのログ出力

    - 略 - #define LOG(msg) logging(__FILE__, __FUNCTION__, __LINE__, msg) void logging(char* file, char* func, int line, char* msg) { - 略 - } void main(void) { LOG("An Error is Occored."); } __FILE__, __LINE__ は標準の組み込みマクロ。 呼び出し元のファイル名、行番号が出力される。 __FUNCTION__ はgccコンパイラ独自のマクロ。 呼び出し元の関数名が出力される。 __func__ っていうC99準拠のもあるらしい。 よくわからんけど __func__ はコンパイル時に怒られたりするから、 __FUNCTION__ のほうがベター

    seiunsky
    seiunsky 2009/03/08
    デバッグ用ログのお決まりの書式
  • ログ管理 〜syslogとその周辺〜 【応用編】syslog について・・・C言語によるログの出力方法

    syslog は C 言語のインタフェースが用意されており、アプリケーションから簡単にログを出力することができます。なにかサービスをおこなうようなアプリケーションを作成したときには、できるだけ syslog にログを出すようにしましょう。 FreeBSD では、リスト5 に挙げる関数が用意されています。 #include #include void syslog(int priority, const char *message, ...); void vsyslog(int priority, const char *message, va_list args); void openlog(const char *ident, int logopt, int facility); void closelog(void); int setlogmask(int maskpri);

    seiunsky
    seiunsky 2009/03/08
    syslogへの書き込み方法
  • C言語でJavaと同等程度の例外処理をやってみる - ほんまの走り書き技術メモ

    ご存じの通りC言語には例外処理という立派なものは搭載されていない。 そこで、C言語でsetjmpという関数を使ってJavaと同等の例外処理をやってみる。 JavaとCでmy_divという関数を作って例外処理をする int型の引数を2つ持つ関数(メソッド)を定義して割り算した結果をintで返す a / bのときbがゼロの場合にゼロ除算例外を起こす a / bのときaがゼロの場合にその他の例外を起こす Javaでは・・ bがゼロの時は特に例外判定をする必要がなく、勝手にゼロ除算例外になるので次のようになる。 class Longjump { public static void main(String[] args) { int x, y, ans; if (args.length != 2) { System.err.println("Usage: java Longjump X Y");

    C言語でJavaと同等程度の例外処理をやってみる - ほんまの走り書き技術メモ
    seiunsky
    seiunsky 2009/02/20
    C言語での例外処理。なるほど、これはきれいだ。
  • C言語のプログラム終了時に呼ばれる関数 - ほんまの走り書き技術メモ

    atexitを使うとプログラム終了時に呼ばれる関数を登録できる。(void (*)()の関数) atexitは複数登録(スタックとして積まれる?)できるようで、後入れ先出しで実行される。 また、終了時の関数は少なくともATEXIT_MAX個(32個?)登録できるらしい。 使い方 #include <stdio.h> #include <stdlib.h> void func1(); void func2(); void func3(); int main() { atexit(func1); atexit(func2); atexit(func3); printf( "Enterキーを押すとプログラムを終了します\n" ); getchar(); return 0; } void func1() { printf( "終了中...func1\n" ); } void func2() { p

    C言語のプログラム終了時に呼ばれる関数 - ほんまの走り書き技術メモ
    seiunsky
    seiunsky 2009/02/20
    C言語で終了時に呼ばれる関数の設定 atexit
  • C++ Style Guide

    Benjy Weinberger Craig Silverstein Gregory Eitzmann Mark Mentovai Tashana Landray This style guide contains many details that are initially hidden from view. They are marked by the triangle icon, which you see here on your left. Click it now. You should see "Hooray" appear below. Hooray! Now you know you can expand points to get more details. Alternatively, there's an "expand all" at the top o

  • 1