タグ

C言語に関するodawaraのブックマーク (118)

  • コールバック関数の登録とかのコード - 揮発性のメモ2

    // コールバックを管理する構造体 typedef struct { void *a; void (*callback)(void *); } callback_t; // コールバックさせたい関数 void g( void *a ) { printf("%s\n", (char *)a); } // コールバックを初期化登録する関数 int setcallback( callback_t **pp, void (*callback)(void *), void *a ) { callback_t *p; p = malloc( sizeof(callback_t) ); p->a = a; p->callback = callback; *pp = p; return 0; } // コールバックの登録を開放する関数 int unsetcallback( callback_t *p )

    コールバック関数の登録とかのコード - 揮発性のメモ2
  • 構造体のメンバーのオフセットを知る - 揮発性のメモ2

    Man page of OFFSETOF #include <stddef.h> typedef struct { char a; int b; } hoge_t; main() { printf( "%d\n", offsetof( hoge_t, b ) ); // 4 } どんなマクロなのか読んでみたかったけど、なんだかどこにも定義が無い。 lib/gcc/i486-linux-gnu/4.3.2/include/stddef.h なんかには #define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER) と書いてあり、結局なにもわからなかった。 そのた参考資料: Offsetof - Using the GNU Compiler Collection (GCC) offsetof - Wikipedia あと、古そう

    構造体のメンバーのオフセットを知る - 揮発性のメモ2
  • キューの管理 - 揮発性のメモ2

    優先順位のついたキューがほしい。ついでにプロセス間通信としての機能も含めて考える。 複数クライアントから単一サーバへ片方向のみ受け渡しが出来ればいい POSIX メッセージキュー System V メッセージキュー 自作デバイスドライバ 名前付きパイプ UNIXドメインソケット 使い方 mq_open() msgget() open() open() *1 socket() n対1通信 可能 可能 可能 可能 *2 可能 優先順位 つけられる つけられるし指定も出来る つけるように作ればできる つけられない つけられない 通信相手 いなくても可 いなくても可 いなくても可 いないとダメ いないとダメ selectで 待てる*3 待てない *4 待てる 待てる 待てる キューのサイズ 大きいし可変 大きいし可変 どうでもできる 小さい *5 小さい スクリプトからの利用 面倒 perlなら簡

    キューの管理 - 揮発性のメモ2
  • C言語でタプルを生成 - ichhiの日記

    C言語でタプルを生成してみました。以下はそのメモ 他言語でPythonの拡張を作るには、BoostライブラリやSwigを使う方法など、いくつかあります。 そのなかで、今回はC言語でPythonのタプルを生成します。 方針はタプルを生成するCコードを書き、setup.pyでビルド&インストールスクリプトを書いて実行した後、動作確認をします。 動作はn個のタプルを生成します。 ファイル名 tuple2.c // tuple2.c #include <Python.h> PyObject* tuple2_make(PyObject* self, PyObject* args) { int len, i; PyTupleObject* ret_tuple; if (!PyArg_ParseTuple(args, "i", &len)) { return NULL; } if(len == 1) {

    C言語でタプルを生成 - ichhiの日記
  • How do I set up the python/c library correctly?

  • Python2.6のC拡張モジュールを使ってオブジェクトをCで書いてみた(1) - nabeyangの日記

    C拡張モジュールの例として、helloworldをstringオブジェクトとして返すような簡単な例は見ますが、ユーザー定義オブジェクトをC言語で実装するような例は見つかりませんでした。Makefileはhelloworldモジュールを作るときと変わらないので省略します。最低限のオブジェクトを定義するためには、コンストラクタの追加、メソッドが追加、フィールドの追加ができたら良いと思います。これらの作業をするために、自作文字列モジュールStringを書くことにします。テストケースとしては次のようなものをパスすれば良いでしょう。 #!/usr/bin/python import String import unittest class StringTest(unittest.TestCase): def testString(self): s = String.new('abc') self.a

    Python2.6のC拡張モジュールを使ってオブジェクトをCで書いてみた(1) - nabeyangの日記
  • 1. Extending Python with C or C++

    1. C/C++によるPythonの拡張 Pythonへ新しい組み込みのモジュールを加えることは、 もしC言語でプログラムを書く方法を知っているならば、かなり容易である。 そのような拡張モジュールはPythonで直接できない 二つのことをなし得る。 それらは、新しい組み込みのオブジェクト型を実装でき、Cライブラリ関数と システムコールを呼ぶことができる。 拡張モジュールを支援するために、Python API (Application Programmers Interface)は、 Python実行時システムのたいていの側面を利用できる、 関数、マクロと変数の集まりを定義する。 Python APIはヘッダー"Python.h"をインクルードすることで、 C言語のソースファイルに取り込まれる。 拡張モジュールのコンパイルは、あなたのシステムの設定はもちろん、 その意図された使い方にも依存す

  • Linux スレッドプログラミング

    GNU/Linux でのスレッドプログラミング NPTL (Native POSIX Thread Library) Programming. 以前から GNU/Linux でスレッドプログラミングをするための簡単なガイドを書きたいと思っていました。今更スレッドプログラミングについて書いても目新しいものになるとは思えないのですが、初めて NPTL (Native POSIX Thread Library) を使ったプログラムをするという方には、もしかしたら役に立つ情報かもしれません。はじめは怖々小さなプログラムを書いて動かしてみる。思ったより簡単なことに驚かれるでしょう。スレッドプログラミングと言っても難しいことはなにもありません。ライブラリが沢山仕事をしてくるおかげで快適に使うことができます。 文中では glibc のバージョンによる違いについても触れます。参照したバージョンは gli

  • Pthread

    Pthread■基■生成#include <pthread.h> int pthread_create(pthread_t *id, pthread_attr_t *attr, void* (*funcA)(void*), void* arg); 新しいスレッドが生成され、funcAに引数argが渡されて実行されます。 idには生成されたスレッドのスレッドIDが格納されます。 リソース的な問題で生成出来なかった場合は0以外が返ってきます。 ■属性設定●初期化 int pthread_attr_init(pthread_attr_t *attr); attrオブジェクトを初期化します。 ●破棄 int pthread_attr_destroy(pthread_attr_t *attr); attrオブジェクトを破棄します。 一度破棄したオブジェクトを再度初期化をしなければ使用できません。

  • pthreadの使い方 - jiroの日記

    pthreadについて詳しく書いてあるページがあまり見つからなかったので 簡単にpthreadの使い方をメモします。 int pthread_create(pthread_t * thread, pthread_attr_t * attr, void * (*start_routine)(void *), void * arg); この関数でスレッドを生成します。 使用例#include void * evaluate_responce(void *); typedef struct { char *c; int i; long l; } pth_arg; /* thread_func関数に値を渡すときの構造体 */ /* スレッド関数 */ void * thread_func(void *arg){ pth_arg *this_arg; this_arg = arg; printf("

    pthreadの使い方 - jiroの日記
  • programming/python/C言語でPython拡張 - PukiWiki

    2008-07-20 - subversion 2008-07-08 - Kubuntu 2008-07-04 - scipy 2008-05-25 - apache 2008-05-09 - ctypes 2008-04-26 - ファイルシステム - Linux - ループバックデバイス 2008-04-21 - コマンド 2008-04-03 - emacs 2008-03-17 - itertools 2008-03-14 - python - RecentDeleted - cvs 2008-03-10 - .bashrc 2008-02-06 - PIL 2008-01-21 - cron 2008-01-17 - popen2 2008-01-12 - sip 2008-01-10 - 初級編 C言語によるPython拡張 Pythonは書き

  • PythonのC言語拡張モジュールを使ってみる - Konnichiwa, A doumo

    概説 Python APIPython.hを取り込むことにより、Pythonインストール標準のC言語APIを使用しし、拡張モジュールを作成します。古いPythonしかインストールされていない環境(ctypesが標準でつかえない場合を想定)や、外部モジュール、SWIGがインストールされていない環境などでは有効な手段です。 ↑ 作成方法 拡張モジュールのコードを書く(ext.c) #include <Python.h> static PyObject * fact(PyObject *self, PyObject *args) { int n; int i; int ret=1; if (!PyArg_ParseTuple(args, "i", &n)) return NULL; for (i=n; i>0; i--) ret *= i; return Py_BuildValue("i",

  • 1.7 拡張モジュール関数でのパラメタ展開

  • バイナリファイルの読み書き

    第1項:テキストとバイナリ 第2項:ファイルの開閉 第3項:ファイルへの書き込み 第4項:ファイルからの読み込み [1]テキストとバイナリ ファイルには様々な種類のものがありますが、最も基的な区別として、 テキストかバイナリかという違いがあります。 全てのファイルは質的にはバイナリファイルです。 バイナリを直訳すると、2進数という意味なのですが、 バイナリファイルとはその名の通り、2進数で記録されたファイル、 要するに、数値のみで記録されたファイルのことを意味します。 それに対して、テキストファイルは、文字列だけが記録されたファイルです。 コンピュータの中では、文字列といえども数値で表されているので、 テキストファイルも、質的にはバイナリファイルです。 しかし、テキストファイルは文字列で記録されているため、 テキストエディタなどで修正を行うことが容易です。

  • Sending Apple Push Notifications (APN) in C - Updated (Using CA Cert) - MobileHell

  • PythonからCプログラムを呼び出す | 象歩

    PythonからCプログラムを呼び出す [更新日: 2022年03月19日 ] Python でプログラミングしていると、 新しいデータ構造を作り上げる場合などに、 C/C++ の力を借りたくなることがあります。 Python から C/C++ コードを呼び出す方法を書きます。 まずは、Cから... 1.ソースコード 次の関数を題材にします。 // hello.c int add(int x, int y) { return x + y; } void out(const char* adrs, const char* name) { printf("こんにちは、私は %s の %s です。\n", adrs, name); } 2.wrapper コード まずモジュール(ライブラリ)名を決めます。 ここでは "hello" とします。 そしてラッパモジュールを書きます。 // hello

  • C言語/日時 - BugbearR's Wiki

    2017-04-16 FreeBSD/mpd 2016-12-23 RecentDeleted Blogアプリ 日記 2016-11-17 当にあった怖いコード/1 2016-05-16 .NET 2015-07-06 書きたいこと 2015-07-05 postgres Java/変数の初期化に安易に空オブジェクトを代入しない 2015-06-30 PukiWiki/1.4/マニュアル/プラグイン/u 当にあった怖いコード/15 2014-10-01 日記/2014-10-01 2014-09-09 日記/2014-09-09 2014-08-13 日記/2014-08-10 2014-05-28 バグパターン/日時 バグパターン 2014-04-13 IPv6 2014-03-20 パスワード問題 2014-01-27 DNS/ルートサーバーは13台という神話 2014-01-25

    odawara
    odawara 2011/06/08
    time_tの使い方いろいろ
  • まるこむ まるこめ まるこむい Cでmysql接続

    C++MySQLへ接続するのに、MySQL++なるものがあるみたいですが、 Xamppで導入したMySQLではライブラリ関係がたりなさそうなので、 できるだけ、標準で使えるCのスタイルで試してみる。 しかしながら、xamppのmysqlではmysql.hがないようだ。 なので、とりあえず同バージョンのMySQLソースコードをとってきて展開する。 rootユーザで/usr/local/srcにソースコードを取得。 [root@malcom src]# wget http://www-jp.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.46.tar.gz/from/http://ftp.jaist.ac.jp/pub/mysql/ 展開 [root@malcom src]# tar zxfv mysql-5.1.46.tar.gz これだけ mys

    odawara
    odawara 2011/06/08
    CでMySQLのクエリを呼びたいとき
  • メッセージキュー

    メッセージキューはパイプとより扱いが簡単でちょっと嬉しい. メッセージキューに関する関数 サンプル メッセージキューに関する関数メッセージキューに関する関数として,以下がある. int msgget(key_t key, int msgflg); 指定したkeyのメッセージキュー識別子を取得.msgflgにはパーミッションやオプションなどを指定する.これにIPC_CREATを指定すると,指定したkeyのメッセージキューがない場合は作成してくれる. int msgsnd(int msqid, struct msgbuf *msgp, size_t msgsz, int msgflg); メッセージの送信. ssize_t msgrcv(int msqid, struct msgbuf *msgp, size_t msgsz, long msgtyp, int msgflg); メッセージの受

    odawara
    odawara 2011/06/05
    メッセージキュー
  • 32bit/64bit 両対応な printf の書き方 - pyopyopyo - Linuxとかプログラミングの覚え書き -

    32bit/64bit両対応のコードを書いていると,よく printf() で引っかかります."%d"のような"書式"がややこしいからです. というわけで,変数の"型"と"書式"の対応を,表で整理してみました. 型 書式 注意事項 ssize_t %zd size_t %zu intmax_t %jd uintmax_t %ju ptrdiff_t %t signed char %hhd unsigned char %hhu short int %hd unsigned short int %hu int %d unsigned int %u long int %ld unsigned long int %lu long long int %lld unsigned long long int %llu int32_t %PRId32 以下,#include が必要(下記参照) uint3

    32bit/64bit 両対応な printf の書き方 - pyopyopyo - Linuxとかプログラミングの覚え書き -