タグ

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

  • fork()は失敗するんだぜ、覚えときな

    fork() can fail: this is important あー、fork()のことね。プロセスがもっとプロセス作るためのやつな。いや、他にもプロセス作る方法はあるけどな。ま、面白い話がもうひとつあるから聞かせてやるよ。 forkは失敗するんだぜ。分かってるか? マジで分かってるか? マジだぜ。forkは失敗するもんだ。mallocと同じさ。失敗することもある。そんなに頻繁にってわけじゃないけどさ、でも失敗したら、無視できっこないぜ。ちっとは脳みそ働かせなきゃならん。 forkが0を返したら、そいつは子プロセスで、親なら正数を返すってことは、みんな知ってるよな。その値は子のpidだ。こいつを保存しといて、あとで使うってわけだ。 失敗を確認しない場合どうなるか知ってるか? そうだよ。お前多分、"-1"(forkのエラー通知)をpidとして扱ってるんだろ。 さて、問題の始まりだ。

    hiromark
    hiromark 2014/08/21
    そう、これ怖いの
  • Man page of AIO

  • プロセスとかスレッドとかプロセス間通信とかについて書く場所

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    プロセスとかスレッドとかプロセス間通信とかについて書く場所
    hiromark
    hiromark 2013/02/11
    ああ、まとまってるな。
  • 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
    使い方忘れとる。
  • Geekなぺーじ : 拙著「Linuxネットワークプログラミング」の紹介

    拙著「Linuxネットワークプログラミング」に関する情報ページです。 サンプルプログラムダウンロード、はじめに/目次/Chapter 1~3までのサンプルPDF、書籍中の間違いに関する情報を扱っています。 参考:拙著に関して発売時に書いたブログ記事。拙著中のコラムを書く過程で書いたブログ記事「いいから殺せ。後はこっちでなんとかするから」。 サンプルプログラム (間違い箇所の修正対応済み) まとめてダウンロード(tar.gz) 2-2 IPv4+TCPによるソケット実装例 2-4 ファイルディスクリプタが0となる場合 2-5 単純なTCPサーバの実装 2-6 単純なTCPクライアントの実装 2-9 socket()システムコールを失敗させる 2-10 注意すべきエラー処理 2-11 printfをperrorの前に実行したケース 2-12 bind()を行わない場合 2-19 単純な名前解決

  • Linux / UNIX & ネットワーク 参考サイト

    Linux / UNIX & ネットワーク 関連の参考サイトと書籍 最終更新 : 2006/3/18 Linux / UNIX & ネットワーク 関連で、 主にソフトウェア開発者向けの参考サイトや書籍等の紹介とリンクです。 0. 目次 書籍 プログラミング Linux 情報・解説 用語等の検索(日語) 用語等の検索(英語) 用語集 RFC ネットワーク 情報・解説 GNU GPL などのオープンソース Apache などのWebサーバ関連 団体 1. 書籍 詳解 UNIXプログラミング ... 「Advanced Programming in the UNIX Environment(1st ed.)」 の邦訳。名著です。UNIX系のプログラミングをする際には必ず机の上に置いておきたい一冊。 UNIX ネットワークプログラミング 第2版 Vol.1

  • Book: Debug Hacks

    TOPICS Hacks , Programming , Linux , Ruby 発行年月日 2009年04月 PRINT LENGTH 424 ISBN 978-4-87311-404-0 FORMAT PDF ミラクル・リナックス株式会社の精鋭エンジニアたちが、長年のLinuxカーネル開発の経験で培ったデバッグテクニックを詳解。こころがまえから、準備、必要な知識、バグの原因をすばやく特定し修正するために便利なテクニックとツール、高度なデバッグ技まで惜しみなく披露します。多くの事例に基づいた実際的実用的な技が満載です。効率良くかつクオリティーの高い開発のために必須の一冊です。 Debug Hacks推薦の言葉 プログラムにはバグが付き物です。バグは人間の予想を超えたところからやってきます。世界最初のバグは、リレー式計算機の中にまぎれこんだ蛾だったそうです。あわれリレーの間に挟まれた蛾に

    Book: Debug Hacks
    hiromark
    hiromark 2009/04/06
    なんだこのすごそうな一冊は。
  • 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 2009/01/21
    このまとめは嬉しいな。
  • Makefileの書き方 - スキルアップ輪講

    makeって何? † ソースファイルを分割して大規模なプログラムを作成していると、コマンドでコンパイルするのが面倒です。また、一部のソースファイルを書き換えただけなのに全部をコンパイルし直すのは時間の無駄です。 そんな問題を解決するのがmakeです。Makefileと呼ばれるテキストファイルに必要なファイルと各ファイルのコンパイルのコマンド、ファイル間の依存関係を記します。そして、“make”というコマンドを実行するだけで、自動的にコマンドを実行してコンパイルしてくれます。これだけではスクリプトと大差がないのですが、makeはMakefileに記された依存関係に基づいて更新されたファイルの内関連のあるものだけを更新することで、コンパイル時間を短くします。 makeは特定のプログラミング言語に依存したものではありません。C言語のソースファイルのコンパイルにも使えますし、Verilog-HDL

    hiromark
    hiromark 2009/01/17
    これは結構うれしい。
  • はやいTCPサーバの書き方 - nyaxtのPC作業ログ

    cagra高速化にあたってのノウハウを一部公開してみます。また明日校正/更新します。つっこみ待ちです。 select(2)の代わりにepoll_wait(2), kqueue, /dev/epoll等を使う 他に山ほど解説ページがあるので略 大量のディスクリプタを処理するようなサーバの場合、多少効果があるかもしれません。しかし、クライアント数が少ない場合、劇的な性能の向上は見込めないとおもいます。クライアント数が多い場合は、1セッション1スレッドなモデルではOS側のタスクスイッチングのオーバーヘッドが効いてくることも多いです。クライアント数を増やすには複数のセッションを1スレッドで処理できるようにすると良いです。実装にあたっては、non-blocking ioを活用すると効果的です。 TCP_NODELAYを設定する Nagleアルゴリズムをオフにします。多少応答性が良くなります。 これっ

    はやいTCPサーバの書き方 - nyaxtのPC作業ログ
    hiromark
    hiromark 2009/01/08
    このあたりのパフォーマンス向上って結構大変だけにこういう指標は嬉しい。
  • 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 2009/01/04
    この辺の情報はなんぼ揃えても揃えすぎることがない。
  • straceを使ったデバッグ | OSDN Magazine

    プログラムが機能を果たせない場合には、有用なエラーメッセージを返し、問題を解決する手がかりを提供するのが理想的だ。しかし残念ながら、このような理想的な状況は珍しく、アプリケーションでエラーが発生したときに、手元に何の情報もないことも多い。 ここで、デバッグツールの登場だ。私にとってなくてはならないツールの1つが、straceだ。straceはシステムコールトレーサで、すでに実行されているプログラムによって発せられたコールを追跡する(straceを既存のPIDにバインドする)ことも、テストしたいプロセスをstraceに開始させることもできる。 では、straceの使い方を実例とともに見ていくことにしよう。 KDE起動時の問題 以前、私はKDEを起動する際の問題をデバッグしていた。返されたエラーメッセージからは、何の手がかりも得ることができなかった。 _KDE_IceTransSocketCr

    straceを使ったデバッグ | OSDN Magazine
    hiromark
    hiromark 2008/12/30
    strace、しばらく使ってなかったからすっかり忘れている。
  • はてなブログ | 無料ブログを作成しよう

    思いは言葉に。 はてなブログは、あなたの思いや考えを残したり、 さまざまな人が綴った多様な価値観に触れたりできる場所です。

    はてなブログ | 無料ブログを作成しよう
    hiromark
    hiromark 2008/12/26
    ちょっと悩んでいる最中のところなのでメモ。
  • OMake つかったらC言語でプログラム書く手間がバカみたいに減った - 日記を書く[・ _ゝ・]はやみずさん

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

    OMake つかったらC言語でプログラム書く手間がバカみたいに減った - 日記を書く[・ _ゝ・]はやみずさん
    hiromark
    hiromark 2008/12/04
    プログラミングの生産性あがりそうだな。
  • 第1回ローレイヤー勉強会 - Hello, cruel world

    Linux Kernel Hacking」というタイトルで1時間ほど話しました。資料はこちらからどうぞ。あと小手先の話になりますが、プレゼンする際、「参加者からのスクリーンの見易さ」には気をつけるようにしています。スクリーンを見る見ないは参加者の自由ですが、スクリーンが存在する以上、話す側は観られることを前提にする必要があると思います。具体的には、スライドのフォントサイズスライド中のコマンド、ソース等は、黒バック、黄色文字putty、コマンドプロンプトも同様にフォントサイズを調整、黒バック + 黄色文字必要に応じてZoomitを利用コマンドプロンプトを黒バック + 黄色文字にするのは塩月さんがされているのを見て真似させてもらっています。 以下、例の如く参加者のブログエントリです。id:egggarden - http://d.hatena.ne.jp/egggarden/20081123

    hiromark
    hiromark 2008/11/26
    ローレイヤのお勉強に。
  • 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
  • Manpage of MPROTECT

    Section: Linux Programmer's Manual (2) Updated: 2008-08-06 Index JM Home Page roff page 名前 mprotect - メモリ領域の保護を設定する 書式 #include <sys/mman.h> int mprotect(const void *addr, size_t len, int prot); 説明 mprotect() は、区間 [addr, addr+len-1] のアドレス範囲を含む 呼び出し元のプロセスのメモリページのアクセス保護を変更する。 addr はページ境界に一致していなければならない。 呼び出し元のプロセスがアクセス保護に違反するようなメモリアクセスを 行おうとすると、カーネルはシグナル SIGSEGV をそのプロセスに対して生成する。 prot には、 PROT_NONE か、

    hiromark
    hiromark 2008/10/06
    「区間 [addr, addr+len-1] のアドレス範囲を含む呼び出し元のプロセスのメモリページのアクセス保護を変更」
  • 関数ポインタと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
    とりあえず面白い。