タグ

cに関するchezouのブックマーク (6)

  • STR06-C. strtok() が分割対象文字列を変更しないと想定しない

    STR06-C. strtok() が分割対象文字列を変更しないと想定しない C の関数 strtok() は次の 2 つの引数を取る文字列字句分割関数である。引数は、分割対象となる初期文字列、および const 修飾された区切り文字である。この関数は返り値として、字句の 1 文字目を指すポインタ、または字句がない場合は NULL ポインタを返す。 strtok() の 1 回目の呼び出しで、文字列は字句と区切り文字に分割される。strtok() 関数は、区切り文字が最初に現れるところまでを解析し、区切り文字を null バイト('\0')に置き換え、その字句の 1 文字目のアドレスを返す。strtok() の 2 回目以降の呼び出しでは、直前で呼び出しで置いた null 文字の直後から解析を開始する。 strtok() は分割対象の元の文字列に変更を加えるため、2 回目以降の呼び出しの結

    STR06-C. strtok() が分割対象文字列を変更しないと想定しない
    chezou
    chezou 2015/05/09
    strtok()は破壊的なので、コピーしよう
  • 革命の日々! __attribute__(alloc_size) を使わないと_FORTIFY_SOURCE を活かせないよ。という話

    _FORTIFY_SOURCEというバッファーオーバーフロー攻撃を防ぐのにとても有用なマクロがある。 知らなかった人は以下のmanでもまず見てください http://linuxjm.sourceforge.jp/html/LDP_man-pages/man7/feature_test_macros.7.html _FORTIFY_SOURCE (glibc 2.3.4 以降) このマクロを定義すると、文字列やメモリの操作を行う様々な関数を 使用する際にバッファオーバーフローを検出するための軽めのチェックが 実行されるようになる。すべてのバッファオーバーフローが検出される わけではなく、あくまでよくある例についてだけである。 現在の実装では、以下の関数にチェックが追加されている: memcpy(3), mempcpy(3), memmove(3), memset(3), stpcpy(3),

  • □メッセージキューの使い方(CとPHPでプロセス間通信) | Linux Install Memo

    □メッセージキューの使い方(CとPHPでプロセス間通信) C言語で作ったプロセス同士はもちろん、C言語で作ったプロセスとPHPで作ったスクリプト間でもメッセージキューであれこれやり取りしたい。手順としては、とりあえずC言語側でもPHPでも同じ。 http://www.fireproject.jp/feature/c-language/ipc/message-queue.html より、メッセージキューの実験 semmainで作ったセマフォをsemotherでロック、すると別のsemotherを起動すると先に起動したsemotherが終わるまで後からのは待つ cat > sendque.c #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> #include <unistd.h> #include <stdio.h

    chezou
    chezou 2011/11/02
    プロセス間通信の方法
  • Ruby 拡張モジュール入門 / SlideShare

    Web scale backups for MySQL, Алексей Копытов (Percona)

    Ruby 拡張モジュール入門 / SlideShare
  • OMake つかったらC言語でプログラム書く手間がバカみたいに減った - 日記を書く[・ _ゝ・]はやみずさん

    OMakeすごい。OMakeはマジですごい。 OMakeはGNU makeの代替品みたいなものなんだけど、正直なところこのツールの強力さはGNU makeと比べると失礼なくらいすごい。これのおかげで、「コード修正→ビルド→デバッグ→コード修正→・・・」のループの、ビルドにあたる作業がほぼ消え去った。 ファイルの依存関係の解析がとにかくすごい。よくあるユースケースなんかの場合、最小限の手間でほぼ完璧に依存関係を網羅して、よしなにビルドしてくれる。 とりあえず、はやみずが実際に使ってみたケースを例にとってそのすごさの一端を紹介しようと思う。 case study 論より証拠ということで、自分が OMake を試しにつかってみたケースを紹介する。C言語でスタティックライブラリを作っていて、それに加えて簡単なテストプログラムを書いている。 /include/ 以下にヘッダファイルが全部ある /sr

    OMake つかったらC言語でプログラム書く手間がバカみたいに減った - 日記を書く[・ _ゝ・]はやみずさん
  • Dynamic allocation of two dimensional array by C

    C言語で動的に多次元配列を確保する方法 author: dynamic shun reviewer: aso, h-got, moto, 河上様 はじめに 稿に書かれてあるプログラムには,実際に実行してはならないものや 間違いがあるプログラムがありますので注意して下さい. ちなみに実際に動的に確保をするプログラムは 結構長い能書きの後に書いてありますが, 今後のことも考えて最初から熟読されることを薦めます. コンパイル時にサイズが既知の場合 例えば画像処理を行なうプログラムを書こうとします. その画像を表現する二次元配列を用意するには以下のような方法が一般的でしょ う. #define SIZE_X 64 #define SIZE_Y 32 main() { int i, j /* ループ変数 */ double image[SIZE_X][SIZE_Y]; /* 画像 */ for

    chezou
    chezou 2008/01/15
    二次元配列のmalloc方法
  • 1