• 締切済み

gdbmみたいな簡易データベースライブラリ

Unix系OSでC言語で、あるサービスのデーモンプロセスを開発しているのですが・・ 簡易データベース(キー1個に対して値1個が検索できるような)のライブラリで、且つ、mallocを内部で使わないタイプのライブラリ、ないでしょうか? 普通はgdbmなどを使うところなのですが、gdbmは内部でmallocを呼び出しているので、デーモンプロセスで継続的に使うには向かないかも?と思いまして・・ それとも、mallocやfreeを何度も呼び出すことによるガーベージコレクションの問題は、あまり気にしなくてよい、のでしょうか?

noname#43437
noname#43437

みんなの回答

  • guci-ok
  • ベストアンサー率33% (49/146)
回答No.1

C言語を使う理由は何ですか? Perlで書いたほうがずっと楽だと思いますが。 貴方の言う簡易データベースも、選択肢が多いですよ。 C言語に固執するとして、CDBとか、SQLiteなど、色々あります。他のプロセスと共有しないならSQLiteなんか良いと思います。 mallocやfreeは、ちゃんと出来てるなら問題ないはずです。 もっともPerlならメモリリークの問題はまず無いですが。

関連するQ&A

  • C言語のライブラリ

    こんにちは。 フリーのC言語のライブラリを紹介してください。 ファイル同士のマッチングやら、あるレコードの検索などC言語で 開発することになりました。 大量のデータで行なうため、なるたけ早いロジックを組まないといけません。 検索方法については、よく情報処理試験等で出てくる2分探索とか ハッシュ法などを使用したいと思うのですが。 いちから作成するのは大変なので、市販で出回っているライブラリなど ありましたらご紹介していただけないでしょうか? できたら、フリーソフトがいいのですが(安価であれば購入も考えています)、どなかたか知り得ているかたよろしくお願いします。 環境はUNIXなのですが、Windows版でもかまいません。

  • 大容量をmalloc()した後にfree()

    C言語でシステム開発しています。 大容量をmalloc()した後にfree()すると、プロセスが強制終了してしまいます。 malloc()のサイズが小さい場合は問題がありません。 こういった場合にプロセスが強制終了しない方法はないものでしょうか?。 ご存知の方がいらっしゃればお教えいただきたいです。 以上です。

  • 仮想メモリでない環境でのmalloc freeのよいアルゴリズムを教えてください

    ゲーム機の開発をしています。 仮想メモリがないので、mallocとfreeを不定の順序で繰り返しているとヒープ領域が断片化し、そのうちにメモリは不足していないはずなのにmallocできなくなります。ゲーム機のSDKにはそういうことを想定しているのか malloc、free の代替関数を設定できるようになっています。そこで、代替関数を用意しようと考えていると考えています。 完全に断片化をさけるには、mallocした逆順にfreeするとか使い方の工夫をしないと無理とは思いますが、通信系のライブラリにの内部などでmallocしていたりして完全にはこちらの思うとおりにはできません。テクスチャーなどの常駐でなるべく多くのメモリを使いたいので、ヒープ領域はできるだけ小さくすませたいのです。どんなアルゴリズムでも、ある程度の断片化はさけられないと思いますが、malloc、freeのよいアルゴリズムが紹介されているところがありましたら、御教えください。使われ方との相性があると思いますので、複数のアルゴリズムが紹介されていればうれしいです。

  • malloc後、frokを行った場合

    unix(Solaris)系、CCコンパイラ初心者です。 質問内容は2点あります。 1点目 たとえば変数Aを親プロセスでmallocを行い、その後forkした場合は 変数Aは子プロセスにも引き継がれると思いますが、 解放する場合は親、子プロセス両方でfreeする必要はあるのでしょうか? 2点目 1点目のmallocした変数Aをshmで共有メモリにした場合は 親又は子どちらか片方でfreeすればよろしいのでしょうか? よろしくお願いします。

  • C言語からデータベースにアクセス

    現在C言語で作成したシステムで MySQLで作成されたデータベースに格納されている画像のヒストグラム情報(すでに数値化して格納してあります)を取得 →プログラム内で処理→処理後の画像のファイル名、ヒストグラム情報をデータベースに格納 (C言語プログラム、データベースともに同じサーバー機に入っています) という処理を行いたいと思っているのですが、どのようにするのが良いでしょうか? データベースからのデータ取得はCから検索キーを指定して、データを検索、取得できればなおよいです。 PostgreSQLであればlibpqなどのライブラリがあるようですが、MySQLはどうにもわかりません。 C言語で作成したプログラムをCGIとして実装すればよいとは思うのですが、 解説サイトではフォームからの入力ばかりで、データベースから直接の受け渡しや、 画像情報のような大量のデータの受け渡しを解説しているサイトは見当たりませんでした。 なお、データベース操作はphpで行っています。 分かり辛い分で申し訳ありませんが、最悪Cプログラムからデータベースへのデータ格納だけでもかまいませんので、ご回答お願いします。

  • LinuxからWindowsサーバへのrsh

    はじめてですが、Unix/LinuxからWindows2000サーバおよび2003サーバへのrshを起動するために必要な環境について質問をさせていただきます。 逆向き(WindowsからUnix)については実績があります。 リモートホストのWindows側のhostsファイルにUnixのアドレスと名前を登録、ローカルホストのUnix側のhostsや.rhostsファイルにWindowsのアドレス、名前、ユーザ情報を登録するとWindows側でUnixコマンドが遠隔起動できます。 今、実現したいのは、Unix/Linuxをリモートホスト、Windows2000サーバおよび2003サーバをローカルホストとしてUnix/Linux側からWindows側の処理を遠隔起動することです。 hostsや.rhostsファイルは、設定する側が逆になるだけで、考え方は同じと思われます。 Windows側でrshのデーモンプロセスが起動している必要があると思われます。 巷では、WindowsにSFUやSUA(Unixエミュレータ)を導入すればできるという情報が多い様です。 SFUやSUAを導入せず、rshのデーモンプロセスを単独でかつフリーで入手することは可能でしょうか? Windowsのバージョンにより、デーモンプロセスが標準で装備されていたり、別途導入する必要があったりするのでしょうか? よろしくお願いいたします。

  • ツリービューの使い方が・・・

    VBのカスタムコントロールはほとんどさわったことがないので、ぜんぜんわからないです。 初心者っぽい質問で申し訳ないのですが、プロセスとプロセスがもっているスレッドを、プロセスID&スレッドIDをキーにツリー構造を持たせたいのですが、ツリービューのツリーへのアクセスのしかたがわかりません。 MSDNライブラリが壊れているようで、ヘルプが出ないのです。 新しいMSDNライブラリ入れてから、トラブル続き。 TreeView1.Nodes.Add , , "キー", "値" TreeView1.Nodes.Add , , "キー\サブキー", "値" じゃなさそうみたいです。 かといってそれぞれのノードが小枝への参照をもっているわけでもないし、小枝を追加するメソッドをもっているわけでもないし。 単純に小枝への追加のしかたが知りたいだけなんですけど・・・。 だれか教えてください。

  • 無償のおすすめプログラミング言語とデータベースについて教えて!

    このたび職場で使う人名等を管理するソフトを開発することになりました。 その際に使用するプログラミング言語とデータベースソフトについておすすめをお聞きしたいです。ただし「無償で」という制約があるのですが・・・ 私は昔(MS-DOS時代)Cで開発経験がありますが、現在は違う職場でEXCEL VBA程度しかありません。またDBにアクセスするようなものは作ったことがありません。ですので解説本等が豊富なものがいいなと思います。(じつはdelphiがいいかなと思ってましたが、地元本屋ではdelphi関連は1冊もありませんでした。また現在ウイルス騒動がありダウンロードやキーの取得方法が分かりませんでした) みなさまのおすすめ言語とDBを教えてくださいませ。また当方素人なので初級編で言語とDBとの連携が記されている解説本がありましたらそれもお願いします。

  • データベースの内容をCSVへ出力。

    VB2005環境、DBはOracle10gです。 データベースから取得したテーブルの内容を、CSVとして 出力する機能をサービスアプリに付け足したいと考えています。 データベースから値を取得する方法についていろいろと調べては みたのですが、VB2005環境では、Windowsアプリケーションとして 作成する方法しか見つからず(コントロールを配置する際に デザイナを使う方法)、クラスライブラリに機能としてSQL発行から CSVとしてデータを出力するまでの処理をどうしたらいいのか わからず困っています。 基本的なところから勉強できるサイトがありましたらご教授 願えないでしょうか? よろしくお願いします。

  • C言語についてどうしてもわからない疑問

    プログラミング初心者です。 C言語を勉強中に疑問に思ったことが2つあります。 まず1つ目。 C言語以外のプログラミング言語、例えばjavaとかC#とかjsとかpythonとかrubyとかPHPとか、には開発者にとって便利なライブラリとかフレームワーク(僕にはこの2つの明確な違いがわかりません。が、どちらも「開発者が定義しなくてもよい関数やオブジェクトの集合」という認識があります)がありますよね。 そのおかげで色んな人達がプログラミングし易くなりました。 ネット(はてぶのホットエントリとか)でも「馬鹿な俺がプログラミングを勉強して〇〇を作った」といった記事をよく目にします。 でも「C言語を使って」というのは聞いたことがありません。 そもそも、C言語はそいういったライブラリやフレームワークが少ないように感じます。 検索してもrailsとかjqueryのようなフレームワーク(ライブラリ?)は見つかりません。 これが無かったらプログラムなんて作れないのでは? しかし、世間にはC言語で作られたプログラムが多いのもまた事実。 C言語ではいったいどのように開発が行われているのか教えてください。 2つ目 unixとかlinuxといったOSはC言語で書かれている聞いたことがあります。 しかし、プログラムの開発は「コードを書く→コンパイル(→デバッグ)→実行」という流れですよね。 ではOSを開発するときに、そのコードをどうやってコンパイルするのでしょうか? コンパイラはOSの上に立っているとするなら、OSがない状態でコンパイラはどこに立てばいいのか。 そこがわかりません。 誰かこの2つの疑問に答えてください。 お願いします。