問題タブ [systems-programming]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - tcgetsid は getsid 関数とどう違うのですか?
「Unix 環境での高度なプログラミング」を読んでいると、これら 2 つの関数がまったく同じことをしているように思えます。
どちらも呼び出しプロセスに同じ結果を返します。
では、なぜそれらのうちの 2 つをわざわざ設計する必要があるのでしょうか。
ありがとうラースマンズ。しかし、プロセスがそのセッション ID を知りたい場合は、getsid(0) を実行するだけで済みます。プロセスがセッション ID を知るために tcgetsid(pid) を呼び出す必要があるのはどのような状況ですか?
c - DBUSサーバーのクラッシュ
Glibバインディングを使用してDBUSオブジェクトを実装していますが、GArrayを返す際に問題が発生します。
テストクライアントでオブジェクトのメソッドを呼び出すと、セグメンテーション違反が発生します。
関数が戻った後、プログラムがクラッシュします。私がGlibを使用したのはこれが初めてなので、私が見逃していることが明らかなことがあるかもしれません。私はこのチュートリアルを読んでいますが、ほとんどの例が機能します。残念ながら、配列をクライアントに返す例はありません。
windows - Windows クリップボードの内部を知りたい
私は、Windows システムの内部構造と仕組みを学ぶことに興味があります。Windows でのシステム プログラミングの学習に傾倒しています。そのコンテキストで、Windows クリップボードが内部でどのように機能するかについていくつか知りたいと思っています。
- テキストや画像などを選択して Ctrl + C を押すと、正確には何が起こりますか?
- 別のアプリケーションで Ctrl + V を押すと、正確にはどうなりますか?
- コピーされたデータは正確にはどこにありますか? コピーされたデータは、すべてのプロセスで共有されるカーネル モード メモリに格納されますか?
- コピーされたデータはどのようにして別のプロセスで使用できるようになりますか?
システム プログラマーの観点から、上記の質問に対する答えを知りたいです。
また、Windows クリップボードの内部について説明しているリソースを共有してください。
c - dlmalloc の mspace_malloc が奇妙なアドレスを返す
[この問題は解決しました。以下の最後のコメントをご覧ください。]
私のアプリケーションでは、Doug Lea の dlmalloc に基づいて、独自の特別な malloc を使用する必要があります。(mmap を使用して) 匿名ファイルをマップし、マップされたファイルの一部から mspace を作成し、mspace を mspace_malloc に渡します。mspace_malloc が返すアドレスの一部が、マップされたファイルの境界内にないことがわかりました。ただし、私が知る限り、プロセスは malloc されたメモリに正常に読み書きできます。この動作が発生するのはなぜですか? また、mspace_malloc が mspace の範囲内のアドレスを返すように強制するにはどうすればよいですか?
このプログラムを実行すると (上記は単純化されたものですが、大したことではありません)、matrix に割り当てられたアドレスはヒープに対して出力された境界内にあることがわかりますが、2 つの行の 2 つのアドレスははるかに下にあります。下限 -- 0x100000000 を超えています! それでも、マトリックスの読み取りと書き込みができるようです。この最後のポイントは不可解で理解したいと思っていますが、より緊急の問題は、my_malloc が返すすべてのアドレスがヒープ境界内にあることを確認するために何かをする必要があるということです。これは、アプリケーションの他の部分がこれを必要とするためです。
ところで、このプログラムでは 1 つのスレッドしか使用していないため、create_mspace への呼び出しをロックする必要がないことに注意してください。とにかく、この引数を 1 に設定してみましたが、結果に違いは見られませんでした。
ありがとう!
linux-kernel - カーネルスペースおよびユーザースペースプロセスのメモリ割り当て
誰かがこれに関するいくつかのポインタを提供できますか?
ありがとう。
よろしくお願いします、
サンディープシン
debugging - Windows、Linux、OSX 上のデバッガーの低レベルの詳細
重複の可能性:
デバッガーはどのように機能しますか?
デバッガーについてもっと学ぼうとしています。一般的なデバッグの基本と、ウィンドウの低レベルの詳細を知っています。しかし、デバッグがどのように実装されているかの詳細についてもっと知りたいです。Windows、Linux、OSX でのハードウェアとソフトウェアの割り込みのように、デバッガーを実行中のプロセスに接続する方法など。
私は答えを求めているわけではありません。私があなたから得たいのは、このトピックについてもっと学ぶことができる論文、本、リンクだけです.
お時間をいただきありがとうございます。
c - フォークの実装
fork システムコールコードはどのように書かれていますか。関数が2つの異なる値を返す方法と、それを2つの異なるプロセスに返す方法の詳細を知りたいです。つまり、fork システム コールがどのように実装されているか知りたいですか?
ubuntu - Ubuntuでのシステムプログラミング
[質問はaskubuntu.comから移動しました]
Ubuntuシステムプログラミングを始めたいと思います。具体的には、デバイスドライバーの開発とデバッグです。ただし、他のオープンソースプロジェクトに貢献した経験はありますが、どのように始めればよいかわかりません。
私はPythonでかなりのスキル/経験プログラミングを持っています(しかし、ここでは役に立たないと思います)、中程度のCプログラミングスキル、優れたデバッグスキル(ただし、ユーザーモードプログラムのみ)、まともな静的反転スキル(趣味の方が多い)、ここで短い(しかし本当に楽しい)カーネルモジュールプログラミングチュートリアルを経験しました。
いくつか質問があります。
- あなたが私に与えたい特定のアドバイス(あなたが難しい方法を学ばなければならなかった何か)。抽象的質問ですね。
- 私は長い間Ubuntuユーザーでしたが、どこから手伝うことができるかわかりません。デバイスドライバに対する私の特定の関心を考えると、何か提案はありますか?推奨される読み物?私は現在「Linuxシステムプログラミング-カーネルとCライブラリと話している」を読んでいます。
- デバイスドライバのデバッグに関連する推奨資料はありますか?
ありがとう。
linux - MAC 層 (Linux) でのワイヤレス インターフェイス (802.11) へのアクセス
私はここ数日、マニュアル ページ、ドキュメント、その他 Google が持ち出したあらゆるものを読んで過ごしましたが、最初よりもさらに混乱していると思います。
私がやりたいことは次のとおりです。C/C++ を使用した Linux システムでワイヤレス インターフェイス (802.11) を介して、独自のレイヤー 3-x プロトコルでデータ パケットを送受信したいと考えています。ここまでは順調ですね。ビーコン、関連付け、または AP/SSID 関連のものは必要ありません。ただし、データ送信については、MAC レイヤーが「通常どおり」に動作するようにしたいと考えています。つまり、ユニキャスト パケットが ACK され、再送信され、バックオフされます。また、拡張 QoS 機能 (802.11e と 4 つのキューと異なるアクセス カテゴリ)。一方、プロミスキャス モードは問題ではありません。ブロードキャスト パケットと特定のステーションに送信されるパケットのみが必要です。
それについて行く正しい方法は何ですか?raw ソケット アクセスに関するドキュメントのほとんどは、ネットワーク スニッフィングに焦点を当てているようで、役に立ちません。私はしばらくの間モニターモードをいじっていましたが、これまでに読んだことから、受信したパケットはモニターモードなどでACKされません.モニターモードがなければ、代替手段は何ですか? アドホック モードと unix raw ソケットを使用していますか? それとも、ドライバーをいじる必要がありますか?
私は完全な解決策を探しているのではなく、どこから始めるべきか、いくつかの良いアイデアを探しています。socket(2)、socket(7)、および packet(7) の man ページを読みましたが、さまざまなモードでの MAC 層の動作に関しては役に立ちませんでした。
前もって感謝します。
c - vfork() システムコールの戻り値
以下のコードを考慮してください:
vfork()の場合、親プロセスと子プロセスが使用するアドレス空間は同じであるため、変数 pid の単一のコピーがそこにあるはずです。この pid 変数がvfork()によって返される 2 つの値を持つ方法を理解できません。
fork()の場合、アドレス空間もコピーされ、各子と親に pid 変数の 2 つのコピーがあるため、この場合、2 つの異なるコピーがfork()によって異なる値を返す可能性があることは理解できますが、理解できません。 vfork()の場合、どのように pid がvfork()によって返される 2 つの値を持ちますか?