問題タブ [system-calls]

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.

0 投票する
10 に答える
21532 参照

c - Linux sys コールを傍受するにはどうすればよいですか?

LD_PRELOAD トリックと、特定の syscall をあなたが提供したものに置き換える Linux カーネル モジュール以外に、syscall をインターセプトする可能性はありますか?

0 投票する
7 に答える
3900 参照

windows - 読み取りエラーを無視した光メディアからの回復

光学メディア (CD および DVD) にアーカイブされたファイルのバックアップがあります。これらはすべて、別のメディアに保存された par2 リカバリ ファイルを持っています。par2 ファイルが存在しない場合でも、1 つの光学ドライブで読み取りを行う際の軽微なエラーは、別のドライブで正常に読み取ることができます。

問題は、障害のあるメディアを読み取る場合、デバイスが複数回再試行する傾向があるため、読み取り時間が非常に長くなることです。

問題は、再試行回数をどのように制御できるか (つまり、再試行なしまたは 1 回のみに設定) することです。何かのシステムコール?ダウンロードできるライブラリ? SCSI レイヤーで作業する必要がありますか?

質問は主に Linux に関するものですが、Win32 へのポインタも大歓迎です。

0 投票する
2 に答える
724 参照

linux - 冗長 Linux カーネル システム コール

私は現在、さまざまなシステム コールにフックし、呼び出されたシステム コールに応じてログに書き込むプロジェクトに取り組んでいます。そのため、たとえば、ファイルのアクセス許可を変更するときは、古いアクセス許可と新しいアクセス許可を追跡するログ ファイルに小さなエントリを書き込みます。しかし、私が見るべき場所を正確に特定するのに苦労しています. 上記の例では、strace は、「chmod」コマンドがシステム コール sys_fchmodat() を使用していることを示しています。ただし、sys_chmod() と sys_fchmod() もあります。

カーネル開発者は自分たちが何をしているのかを知っていると確信していますが、私は疑問に思います: これらの (一見) 冗長なシステムコールのポイントは何ですか? また、どのシステムコールが何に使用されるかについての規則はありますか? (つまり、"at" システムコールか、それとも "f" で始まるシステムコールか?)

0 投票する
2 に答える
1056 参照

linux - Linux でのユーザー空間からの sycall のフック

Linux ですべてのシステムコールをキャッチする方法はありますか? 私が知っている唯一の解決策は、 LD_PRELOAD à la fakerootを使用することですが、それは動的にリンクされたアプリケーションに対してのみ機能します。さらに、このアプローチでは、すべてのシステムコールを列挙する必要がありますが、これは避けたいことです。

0 投票する
2 に答える
6756 参照

c - メモリ保護を把握するために /proc/self/maps を解析するよりも良い方法はありますか?

Linux (または Solaris) では/proc/self/maps、メモリ内の 1 つ以上のアドレスに格納されているものを読み取り、書き込み、または実行できるかどうかを判断するために、手動で繰り返し解析するよりも良い方法はありますか?

たとえば、Windows ではVirtualQuery.

Linux では、mprotectこれらの値を変更できますが、読み戻すことはできません。

さらに、これらのアクセス許可がいつ変更されたかを知る方法はありますか (たとえば、誰かがmmap私の背後にあるファイルを使用したとき)、非常に侵襲的なことを行いptrace、プロセス内のすべてのスレッドで使用しsyscall、メモリに影響を与える可能性のある.地図?

アップデート:

残念ながら、私はこれを JIT 内で使用しています。この JIT は、実行中のコードに関する情報がほとんどなく、定数の近似値を取得しています。はい、Linux で使用される vsyscall ページのように、変更可能なデータの定数マップを保持できることを認識しています。最初の解析に含まれていないものは変更可能で危険であるという仮定に安全に戻ることができますが、そのオプションに完全に満足しているわけではありません

今私がしていることは/proc/self/maps、特定のアドレスの保護をバイナリ検索できる構造を読んで構築することです。私の構造にないページについて何かを知る必要があるときはいつでも /proc/self/maps 、それがその間に追加されていると仮定して読み直します。

テキストを解析してこの情報を取得し、それがいつ変更されるかを知らないのは、非常に厄介なようです。(/dev/inotifyのほとんど何も動作しません/proc)

0 投票する
2 に答える
3136 参照

linux - システム コール: UNIX、Linux、BSD、Solaris のバリエーション

主要な *NIX バリアントの syscall の量に違いはありますか?

普遍的にサポートされるシステムコールはどれですか?

0 投票する
9 に答える
12807 参照

c++ - C++ で system() 呼び出しの結果を読み取るにはどうすればよいですか?

df次のコードを使用して、Linux でコマンドの結果を読み取ろうとしていますpopen

このコードは、終了ステータスが「2」の「メモリエラー」を表示しているため、どこで失敗しているかがわかりますが、理由はわかりません.

Ubuntu ForumsC++ Referenceで見つけたサンプル コードからこれをまとめたので、私はそれと結婚していません。system() 呼び出しの結果を読み取るためのより良い方法を誰かが提案できる場合、私は新しいアイデアを受け入れます。

元の編集:さて、bufSize否定的になりつつありますが、今ではその理由がわかりました. 私が素朴に試みたように、パイプにランダムにアクセスすることはできません。

私はこれをやろうとする最初の人になることはできません. system() 呼び出しの結果を C++ の変数に読み込む方法の例を教えて (または指摘して) もらえますか?

0 投票する
8 に答える
1366 参照

language-agnostic - ライブラリ関数を代わりに使用できる場合にsystem()関数を使用するのは悪い習慣ですか?なんで?

コマンドラインプログラムを呼び出すか、ライブラリを利用することで実現できる、開発中のアプリケーションに必要な機能があるとします。効率が問題ではないと仮定すると、ライブラリを利用するのではなく、単にプログラムをシステムコールするのは悪い習慣ですか?これを行うことの欠点は何ですか?

より具体的に言うと、このシナリオの例は、Webサーバーからファイルをダウンロードする必要があるアプリケーションです。これには、cURLプログラムまたはlibcURLライブラリのいずれかを使用できます。

0 投票する
5 に答える
81188 参照

c - 任意のpthread_tからスレッドIDを取得するにはどうすればよいですか?

pthread_tがあり、CPUアフィニティを変更したいと思います。問題は、 pthread_setaffinity_np()がないglibc2.3.2を使用していることです。ただし、pthread_setaffinity_np()自体がsched_setaffinity()のラッパーであるため、これは問題ありません。これは、プロセスIDの代わりにスレッドIDを渡して、任意のスレッドのアフィニティを設定することで呼び出すことができます。

しかし... sched_setaffinityが使用できるスレッドIDはOSスレッドIDであり、 gettid()システムコールから取得できる種類です。これは不透明(OPAQUE)型のpthread_tとは異なり、gettid()は現在のスレッドのthread-idのみを返します。任意のスレッドのCPUアフィニティを設定できる必要があります。

残念ながら、pthreadのプライベート部分にアクセスできません。そのため、pthread_tをにキャストしてスレッドIDを盗むことができますstruct pthread *プライベートな実装に依存することはさらに多くの問題を求めているので、さらに良いと思います。

私もpthread_getunique_np関数を読んでいますが、これは「一意の整数識別子」を返します。これは、OSスレッドIDと同等の形や形式ではないと思います。

したがって、質問:任意のpthread_tからスレッドIDを取得するにはどうすればよいですか?

0 投票する
2 に答える
2693 参照

user-interface - システムコールを使用した Common Lisp GUI プログラミング

システムコール経由で GUI を書くために (Steel Bank) Common Lisp を使用することについて誰か教えてもらえますか? いくつかのライブラリがあることは知っていますが、これは言語学習の演習なので、自分でやりたいと思っています。

Kubuntu 8.10 と SBCL 1.0.18 で開発しています。

ありがとう。