タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

programmingとlinuxとcに関するhiromarkのブックマーク (32)

  • Manpage of GETPWNAM

  • Manpage of EXECVE

    Section: Linux Programmer's Manual (2) Updated: 2008-08-07 Index JM Home Page roff page 名前 execve - プログラムを実行する 書式 #include <unistd.h> int execve(const char *filename, char *const argv[], char *const envp[]); 説明 execve() は、filename によって指定されたプログラムを実行する。 filename は、バイナリ実行形式か、 以下の形式の行で始まるスクリプトでなければならない。 #! interpreter [optional-arg] 後者の詳細は、後ろの「インタプリタ・スクリプト」の節を参照のこと。 argv は新しいプログラムに渡される引き数文字列の配列である。 e

    hiromark
    hiromark 2010/03/10
    忘れとる。
  • review of C functions

    MS-Windows上では mode 文字列にはさらに 't' または 'b' を 加えることでテキストファイルとして読み書きするか、 バイナリファイルとして読み書きするかの選択ができます。 UNIX上ではその意味はありません。 fdopen関数は既に低水準でファイルが開いている場合に、 それを高水準でも扱えるように、その descriptor を扱う file stream を 作成します。 fileno関数は file stream の核をなす file descriptor の番号を返します。 fputs,puts,fgets,gets 一行読み書き #include <stdio.h> int fputs(const char *str, FILE *stream) int puts(const char *str) char* fgets( char *str, size_t s

    hiromark
    hiromark 2010/03/10
    使い方忘れとる。
  • OMake つかったらC言語でプログラム書く手間がバカみたいに減った - 日記を書く[・ _ゝ・]はやみずさん

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

    OMake つかったらC言語でプログラム書く手間がバカみたいに減った - 日記を書く[・ _ゝ・]はやみずさん
    hiromark
    hiromark 2008/12/04
    プログラミングの生産性あがりそうだな。
  • Linuxでプロセスの優先度を上げて、ずっと俺のターン - sttsのソースコードMemoブログ

    Linuxカーネル徹底理解に載っていた、Linuxで他のプロセスにCPUを使わせないぐらい優先度を上げる方法のメモです。 2008/02/15追記 わざわざコードを書かなくてもLinuxにスケジューリングを変更するコマンドが用意されていました。 chrt [options] [prio] [pid | command [arg]...] 解説 Linuxでは、sched_setschedulerシステムコールを使いスケジューリングアルゴリズムや優先度を変更します。 sched_setscheduler(pid, policy, &spp) 選べるスケジューリングポリシーは、4つあります。 SCHED_FIFO 入出力待ちまで他に制御が移らない SCHED_RR 入出力待ち以外にも時間切れで他のプロセスに制御が移る SCHED_OTHER デフォルトのスケジューリングポリシー SCHED_B

    Linuxでプロセスの優先度を上げて、ずっと俺のターン - sttsのソースコードMemoブログ
    hiromark
    hiromark 2008/11/11
    sched_setscheduler
  • 関数ポインタとmprotectを使って関数の領域を上書き2 - Ryoの開発日記 Neo!

    http://d.hatena.ne.jp/kanbayashi/20081005/p1 とかやってみたついでに遊んでみる。 #include void hoge(){ printf("hoge\n"); } void bar(){ printf("bar\n"); } void main(){ bar(); } こうすると当然 barと出力されるわけだけど、ここでbar関数にhoge関数の中身をコピーして、出力される文字列を入れ替えちゃおう。 下調べ とりあえず、hoge関数とbar関数の中身をobdumpで調べる objdump -d hoge_bar.out 08048414 : 8048414: 55 push %ebp 8048415: 89 e5 mov %esp,%ebp 8048417: 83 ec 08 sub $0x8,%esp ====================

    関数ポインタとmprotectを使って関数の領域を上書き2 - Ryoの開発日記 Neo!
    hiromark
    hiromark 2008/10/06
    とりあえず面白い。
  • はてなブログ | 無料ブログを作成しよう

    京都市の美味しいパティスリーを紹介したい 前編(北側エリア) こんばんはぁ、ぺのぽすです 京都大学に入学してそろそろ4年目、趣味のパティスリー巡りをしてて気づいたことがあります。 京都市のパティスリー、レベル高すぎ!! 京都市はホントどこに行ってもで~~ら美味しいパティスリーがあり大体の観光、ご飯のついでに激ウマ…

    はてなブログ | 無料ブログを作成しよう
    hiromark
    hiromark 2008/05/23
    eventfd というものの解説。覚えておく。
  • enbug diary(2008-02-02)

    _ 日常 当は朝のうちに行くつもりだったのに、 結局夕方になってから、 No Country for Old Men を観に行った。 原作の評判は聞いていたのだが、映画も割と評判良さそうだったので、 見に行く気になった。 少々オーソドックスなストーリーと言えなくもないが、 映画の世界にどっぷり浸かれて、かなり良かったー。 ハリウッドじゃ、最近はゲームやコミックの映画化が多くて、 どうしても勧善懲悪な内容になりがちで、 少々傷気味だっただけに、 こういう善対悪にならない構図は非常によろしい。 一応善に限りなく近い存在であるシェリフは常に事件から一歩退いた位置にいるし、 観客の多くが一見善と捉えがちな主役は所詮こそ泥だ。 どっちの方がより恐ろしい存在か程度の違いしかないと言っていい。 たぶん、この映画で最も重要なテーマは自分の運命の決め方なんだと思う。 われわれは常に何かを選択しながら生き

    hiromark
    hiromark 2008/02/05
    いい勉強になる。
  • マルチスレッドのコンテキスト切り替えに伴うコスト - naoyaのはてなダイアリー

    また Linux カーネルの話です。 Linux では fork によるマルチプロセスと、pthread によるマルチスレッドでの並行処理を比較した場合、後者の方がコストが低く高速と言われます。「スレッドはメモリ空間を共有するので、マルチプロセスとは異なりコンテキストスイッチ時にメモリ空間の切り替えを省略できる。切り替えに伴うオーバーヘッドが少ない。」というのが FAQ の答えかと思います。 が「オーバーヘッドが少ない」と一言にいわれても具体的にどういうことなのかがイメージできません。そこで Linux のスレッド周りの実装を見て見ようじゃないか、というのが今回のテーマです。 3分でわかる(?) マルチプロセスとマルチスレッド まずはうんちく。マルチプロセスとマルチスレッドの違いの図。以前に社内で勉強会をしたときに作った資料にちょうど良いのがあったので掲載します。Pthreadsプログラミ

    マルチスレッドのコンテキスト切り替えに伴うコスト - naoyaのはてなダイアリー
    hiromark
    hiromark 2007/10/11
    これは分かりやすい。何度か読み直そう。
  • naoyaのはてなダイアリー - sched_setaffinity(2) を使って任意のプログラムを任意のCPU上で動かす

    Linux 2.6 には sched_setaffinity(2) というシステムコールがあり、これを利用して任意のスレッドを(マルチCPU環境下で)特定の CPU で実行させることができます。http://www-06.ibm.com/jp/developerworks/linux/051028/j_l-affinity.shtml によるとリアルタイムプロセスでマネージャとなるスレッドをこのシステムコールで特定の CPU に固定する...といった応用が考えられるそうです。 へえ、と思ったのでちょっと遊んでみました。LD_PRELOAD を使って任意のプログラムを任意の CPU に固定して動かしてみます。GCC の __attribute__)((constructor))( で sched_setaffinitiy(2) を呼びます。(参考: http://0xcc.net/blog/

    naoyaのはてなダイアリー - sched_setaffinity(2) を使って任意のプログラムを任意のCPU上で動かす
    hiromark
    hiromark 2007/08/27
    おもしれ。
  • 子プロセスに LD_PRELOAD を継承させない - bkブログ

    子プロセスに LD_PRELOAD を継承させない Linux で LD_PRELOAD 環境変数を使うと共有オブジェクト (共有ライブラリ) のプリロードを行うことができます。通常、LD_PRELOAD が設定されている間は、あるプロセスから呼んだ子プロセスも同様にプリロードを行いますが、場合によっては子プロセスにはプリロードさせたくないときもあります。 たとえば、make に対して foo.so をプリロードさせるつもりで、 LD_PRELOAD=./foo.so make と実行すると、make が呼び出すあらゆるコマンドも foo.so をプリロードします。 その結果、gcc や gcc の呼び出すプログラム cc1, as, collect2, ld まで foo.so をプリロードします。 foo.so が make の挙動を変えることのみを目的としていた場合、 gcc まで影

    hiromark
    hiromark 2007/08/24
    実験レベルならかなり使える。
  • Manpage of QSORT

    hiromark
    hiromark 2007/05/24
    いつもこの関数の使い方を忘れてしまう。
  • ファイル記述子をUnixドメインソケット経由で渡す - bkブログ

    ファイル記述子をUnixドメインソケット経由で渡す Unix 系の多くの OSには、ファイル記述子を別のプロセスに Unix ドメインソケット経由で渡す機能があります。一見、何のために使うのかよくわからない機能ですが、 glibc の nscd はこれをうまく使っています。 nscd (name service caching daemon) は glibc 内で行われる名前関連の問い合わせをキャッシュするサーバです。NIS や LDAP などを用いてネットワークベースでユーザ管理を行っている場合、 getpwuid() などの関数はユーザ名の取得にネットワークアクセスを必要としますが、 nscd を立ち上げておけば、二度目からの同じ問い合わせはキャッシュから得られます。 nscd を立ち上げている GNU/Linux システムでは、キャッシュファイルが /var/db/nscd 以下に作

    hiromark
    hiromark 2006/12/20
    この手は使える。
  • Manpage of ERRNO

    Section: Linux Programmer's Manual (3) Updated: 2008-07-09 Index JM Home Page roff page 名前 errno - 直近に発生したエラーの番号 書式 #include <errno.h> 説明 ヘッダファイル <errno.h> で整数型の変数 errno が定義されており、 システムコールやいくつかのライブラリ関数は、エラーが発生した際に この変数にその原因を示す値を設定する。 この値は呼び出しの返り値がエラー (ほとんどのシステムコールでは -1 で、ほとんどのライブラリ関数では -1 か NULL) を示したときに のみ意味を持つが、ライブラリ関数は成功した場合も errno を変更することが許されている。 有効なエラー番号はいずれも 0 以外の値を持つ。 どのシステムコールもライブラリ関数も errn

    hiromark
    hiromark 2006/11/24
    備忘録。
  • bind: Address already in use ソケットの再利用 - higepon blog

    socketを開いて、bindしてacceptして closeした直後に、同一 port を bindしたところ bind: Address already in useというエラーになった。 socketの close ミスかと思ってデバッグしても原因が分からず、いろいろ検索していたら分かった。 デフォルトの動作では、closeしてもしばらくの間ソケットが開放されないらしい。 これを回避するには setsockopt で SO_REUSEADDRを指定する必要がある。 超バッドノウハウ。。。 const int one = 1; setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(int));

    bind: Address already in use ソケットの再利用 - higepon blog
    hiromark
    hiromark 2006/05/21
    昨年の12月頃に同じ問題でハマりました。
  • Backtraces (The GNU C Library)

    34.1 Backtraces A backtrace is a list of the function calls that are currently active in a thread. The usual way to inspect a backtrace of a program is to use an external debugger such as gdb. However, sometimes it is useful to obtain a backtrace programmatically from within a program, e.g., for the purposes of logging or diagnostics. The header file execinfo.h declares three functions that obtain

    hiromark
    hiromark 2006/05/01
    Backtrace 系の関数の説明。
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
    hiromark
    hiromark 2006/05/01
    使える。
  • いやなブログ - 実行時のスタックの消費量を調べる

    実行時のスタックの消費量を調べる 先日の記事では checkstack.pl を用いて個々の関数がどのくらいスタックを消費するか調べる方法を紹介しました。今回は、実行時の実際のスタック消費量を調べてみます。 以下のコードでは次のような方法でスタックの消費量を調べます。x86_32 の Linux 用です。 最初に max_num_pages 分だけスタックを伸ばす 伸ばした分をすべて mprotect でアクセス不能にしてしまう SIGSEGV を拾って 1ページずつアクセス可能に設定する 最後に、何ページ使ったかを表示する このような処理を行う共有オブジェクトを作成して LD_PRELOAD してやれば、実行時のスタック消費量をページ単位で調べられるのではないか、という試みです。 #include <asm/page.h> #include <assert.h> #include <er

    hiromark
    hiromark 2006/04/30
    すげえ方法。
  • checkstack.pl で関数のスタック消費量を調べる - bkブログ

    checkstack.pl で関数のスタック消費量を調べる Linux カーネルのソースコードに付属する checkstack.pl を使うと、C/C++ のプログラムの関数のスタック消費量を調べることができます。checkstack.pl は objdump -d のディスアセンブルの出力からスタックポインタの操作をパターンマッチしてスタックの消費量を計算しています。 入手方法 checkstack.pl は Linux カーネルのソースコードに付属しています。Debian GNU/Linux sarege なら次のようにコマンドラインから実行して取得できます。ソースツリーに含まれる scripts/checkstack.pl が目的のものです。 % apt-get source kernel-source-2.6.8 使い方 checkstack.pl の使い方は簡単です。スタックサイ

    hiromark
    hiromark 2006/04/24
    こんな便利なツールが?知らなかった。
  • ライブラリの外に公開するシンボルを制限する - bkブログ

    ライブラリの外に公開するシンボルを制限する C言語にはファイル内 (コンパイル単位) からしかアクセスできない static 関数と、別のファイルからもアクセスできる非static 関数があります。しかし、ライブラリを作成する上では、この2つのスコープだけでは不十分なときがあります。 記事では GNUの開発環境において、ライブラリの外に公開するシンボルを制限する方法を紹介します。 次のような例を考えてみます。 % cat a.c // foo() は libfoo の主役の関数なので公開したい void foo() { bar(); } % cat b.c // bar() はライブラリの中だけで使われるべきなので当は公開 // したくない。しかし別のファイルに含まれる foo() から使われ // ているので、非staticにせざるをえない void bar() { } このようなコ

    hiromark
    hiromark 2006/02/22
    知らなかった。すげえ便利なテク。