タグ

ブックマーク / kzk9.net (3)

  • C言語: write(2)の正しい使い方

    Created: Kazuki Ohta, 2006/04/17 Last Update: Kazuki Ohta, 2006/06/14 学校の課題(OS演習)で、open, read, write, close等のシステムコールを使用した課題が出された。システムコールなので当然失敗する事が有り、エラーチェックを正しく行う必要が有るのだが、writeについてはweb上に有る資料も使い方を間違っているモノが多かった。僕も課題では間違えて再提出をくらってしまった。なので、ここにwriteシステムコールの正しい使い方を書き記しておく。 まずは $man 2 write の一部を抜粋してみる。 NAME write - write to a file descriptor SYNOPSIS #include ssize_t write(int fd, const void *buf, si

  • C言語: 実行時間測定の方法

    C言語において実行時間を測定する為の方法はいくつかある。gettimeofday, clock, getrusage, timesを利用する方法である。ここではこれらの方法について検証してみる。これは2005/12/30時点での情報であり、古い亊が考えられるので注意して頂きたい。さらに、内容のほとんどはmanを移しただけなので、正確な情報を得るためにそれぞれの関数のmanを見ることを強く推奨する。 System: Linux 2.6.12 glibc: glibc 2.3.5-1ubuntu12 gettimeofdayを使用する方法 通常はこの関数を使用するのをお勧めする。 gettimeofdayはSVr4, BSD 4.3準拠である。返り値の型はsys/time.hに定義されるstruct timevalで有る。

  • libaio(Linuxの非同期I/Oライブラリ)の使い方 - moratorium

    libaio(Linuxの非同期I/Oライブラリ)の使い方 2007-06-05 (Tue) 4:53 Unix Linuxで非同期I/Oを行うためのライブラリ「libaio」の使い方を書いてみる事にする。少し昔の話になるが、lighttpdが使用し、スループットを80%も上げたらしい。 TOEFLに向けて転置ファイルについての論文(Inverted files for text search engine [moffat 06])でReading対策をしていたところ、意外とスニペット(検索にヒットした箇所の前後の文章)を作るところが時間がかかるという事を教えてもらったので、適当にそれを例題にしてみる。具体的には以下のようなコードを非同期I/Oを使用して速くなるかどうか見てみる。 for (unsigned int i = 0; i < files.size(); i++) { FILE*

  • 1