タグ

forkに関するa2ikmのブックマーク (13)

  • Go言語で知るプロセス(2)

    前回の記事では、プログラムの実行単位であるプロセスについて、さまざまな属性やリソースをGo言語の視点から紹介しました。 今回は、Go言語のプログラムから、他のプロセスを実行したり属性を変更したりする方法を紹介します。 Go言語のプログラムから他のプロセスを扱うときは、プロセスを表す構造体を利用します。 そのための構造体には次の2種類があります。 osパッケージのos.Process: 低レベルな構造体 os/execパッケージのexec.Cmd: 少し高機能な構造体。内部でos.Processを持つ まず高機能で実用的なexec.Cmdの使い方を説明してから、os.Processの使い方を簡単に紹介します。 その後、プロセスに関する便利なGo言語のライブラリを紹介します。 exec.Cmdによるプロセスの起動 exec.Cmd構造体は次の2つの関数で作ることができます。 exec.Comm

    Go言語で知るプロセス(2)
  • Unix プロセスと Docker の罠

    子プロセスを生成する方法として、fork が挙げられます。 fork は、プロセスのコピーを生成するシステムコールで、コピーされた新しいプロセスを子プロセス、fork の呼び出し元のプロセスを親プロセスと呼びます。

    Unix プロセスと Docker の罠
  • Why Ruby app servers break on macOS High Sierra and what can be done about it

    About us Founded in 2008, Phusion creates top of the line server software to power businesses like Apple and Intercom. People who have upgraded to macOS High Sierra and who are using a preforking app server such as Puma or Unicorn (with the right settings), may have noticed this error: objc[81924]: +[__NSPlaceholderDictionary initialize] may have been in progress in another thread when fork() was

  • GitHub - ko1/nakayoshi_fork

    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

    GitHub - ko1/nakayoshi_fork
  • SystemTap を使って Ruby プロセスの Copy-on-Write page faults を追う : sonots:blog

    SystemTap を使って Ruby プロセスの Copy-on-Write page faults を追う : sonots:blog
  • Island Life - GC切って性能向上

    About 南の島のプログラマ。 たまに役者。 Practical Schemeの主。 WiLiKi:Shiro 最近のエントリ 無限cxr高校受験Defense振り返ってみると2019年は色々学んで楽...覚えるより忘れる方が難しい(こともある)眼鏡のつると3DプリンタIris Klein Acting ClassSAG-AFTRA conservatory: Voice Acting創作活動って自分を晒け出さねばならないと...ループを使わずに1から100までMore... 最近のコメント shiro on 歳を取ると時間が速く過ぎるのは、新しいことに挑戦しないから? (2023/03/14)1357 on 歳を取ると時間が速く過ぎるのは、新しいことに挑戦しないから? (2023/03/01)ベアトリーチェ on ハイポハイポハイポのシューリンガン (2022/04/02)ベアトリーチ

    Island Life - GC切って性能向上
  • Linux のプロセスが Copy on Write で共有しているメモリのサイズを調べる

    Linux は fork で子プロセスを作成した場合、親の仮想メモリ空間の内容を子へコピーする必要があります。しかしまともに全空間をコピーしていたのでは fork のコストが高くなってしまいますし、子が親と同じようなプロセスとして動作し続ける場合は、内容の重複したページが多数できてしまい、効率がよくありません。 そこで、Linux の仮想メモリは、メモリ空間を舐めてコピーするのではなく、はじめは親子でメモリ領域を共有しておいて、書き込みがあった時点で、その書き込みのあったページだけを親子で個別に持つという仕組みでこの問題を回避します。Copy-On-Write (CoW) と呼ばれる戦略です。共有メモリページは、親子それぞれの仮想メモリ空間を同一の物理メモリにマッピングすることで実現されます。より詳しくは コピーオンライト - Wikipedia などを参照してください。 この CoW に

    Linux のプロセスが Copy on Write で共有しているメモリのサイズを調べる
  • exec.Run()を読む - Qiita

    Learn You Some Erlang for Great Good!の翻訳も終わって一段落したので、しばらくはGoのソースコード読みでもやるか、ということで改めて標準パッケージのコードを読み始めた。前に読んだときは適当に読んでただけだったので、今回はちゃんとメモを残していく。興味のあるところから読む。 はじめに こんにちは、Go界のイワン・レンドルです。Goでちょっとしたコマンドラインツールを作ってる時にos.StartProcessを生で触ってたら、ラッパーであるexec.Start()あたりの実装が気になったので、読んでみたら結構良かった。というわけでメモ。 func (*Cmd) Run() の実装 func (*Cmd) Run() は func (*Cmd) Start() を呼び出したあと func (*Cmd) Wait() 呼んでるだけ。

    exec.Run()を読む - Qiita
  • fork-exec-kill.rb

  • デーモンについての覚書 - すがブロ

    ちょっと会社でデーモンとは、みたいのを話す機会があったので整理がてらメモ。当はコードも合わせて載せたかったけど、時間がなくて断念したw あやふやな部分もあるので識者の方にはぜひ訂正をお願いしたく……! デーモンとは? ぶっちゃけて言えば無限ループのプログラムなんだけど、詳しくは http://ja.wikipedia.org/wiki/デーモン_(ソフトウェア) とかを見ると良いだろう。 自分で作るのであればおおまかに以下の点を気をつければ良いかなぁと思う。 プロセスを端末から切り離す 入出力を一度閉じる(使うなら明示的にオープンしたものを使おう) SYSLOGなり何がしかの出力ファイルに動作を出力する SIGNALを受け取る PIDファイルを作る 厳密にやろうと思うとumaskを0にするだとか、'/'に移動するだとかもあったりするけど、ゆとりなのでプロセスから切り離すを含めdaemon

    デーモンについての覚書 - すがブロ
  • Rubyでforkを利用したマルチプロセスでコアを使い切りたい気持ち - Qiita

    Rubyで書かれたちょっと重たいバッチ処理があって速くする必要があったので、fork(2)とpipe(2)を使ったマルチプロセス化でコアを活かした並列処理に書き直した話します。 以下の記事に詳しく書いてあるので、TL;DRはそちらを見てな? Forking and IPC in Ruby, Part I Forking and IPC in Ruby, Part II なるほどUnixプロセス ― Rubyで学ぶUnixの基礎 - 達人出版会 Threadじゃいかんの? — GILについて 並行プログラミングとしてまず最初に思いつくのはマルチスレッド化ですが、RubyにおいてはGVL(Giant VM lock)があるためマルチコアを活かすことは難しいのです。 ネイティブスレッドを用いて実装されていますが、 現在の実装では Ruby VM は Giant VM lock (GVL) を有し

    Rubyでforkを利用したマルチプロセスでコアを使い切りたい気持ち - Qiita
  • fork()は失敗するんだぜ、覚えときな

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

  • irbから学ぶRubyの並列処理 ~ forkからWebSocketまで

    (追記:2012-12-13) 記事を電子書籍化しました。「Gumroad」を通して100円にて販売しています。内容についての追加・変更はありませんが、文体の変更、誤記の修正およびメディア向けの調整を行っています。 電子書籍「irbから学ぶRubyの並列処理 ~ forkからWebSocketまで」EPUB版 このリンクはGumroadにおける商品購入リンクになっています。クリックすると、オーバーレイ・ウインドウが立ち上がって、この場でクレジットカード決済による購入が可能です。購入にはクレジット情報およびメールアドレスの入力が必要になります。購入すると、入力したメールアドレスにコンテンツのDLリンクが送られてきます。 購入ご検討のほどよろしくお願いしますm(__)m 関連記事: 電子書籍「irbから学ぶRubyの並列処理 ~ forkからWebSocketまで」EPUB版をGumroad

  • 1