systems-programming

    2

    1答えて

    RDWR(通信プロセスプロセス用)とパイプ(プロセススレッド)としてFIFOをオープンしています。私が64 KB以上の書き込みをしようとすると、write()で待機します。 pipe2(fds, O_NONBLOCK); やパイプを作成した後、あなたがそれを行う必要がある場合: int flags = fcntl(fd, F_GETFL, 0); fcntl(fd, F_SETFL, fla

    6

    3答えて

    mkfifo関数はpath、modeの2つの引数をとります。しかし、私はそれが使用するパスの形式は何か分かりません。私は、名前付きパイプを作成するための小さなプログラムを作成していて、mkfifoのパスにしています。たとえば/home/username/Documentsを使用しますが、メッセージは常にError creating the named pipe.: File existsで-1を返

    6

    1答えて

    は、以下のコードを考慮した値そこにいるはずです。今、私はこのPID変数は、によって返された2つの値を持つことができない理解するvfo​​rk()すなわち、子供のためのゼロと親のための非ゼロ? フォークの場合は ()アドレス空間にもコピーされますと、PID変数の2つのコピーがそれぞれの子と親であるので、私はこの場合、2つの異なるコピーを理解することができます異なる値がフォークで戻ってきたことができま

    6

    3答えて

    最近のLinuxカーネル(少なくともamd64)は、カーネルにsyscallインタフェースを抽象化して、カーネルが最適な呼び出し規約を選択できるようにする、linux-vdso.so.1というマジックオブジェクトファイルを提供します。 Cでコードを書くと、glibcは自動的にこのオブジェクトを使います。 今、glibcを使用せずにプログラムを作成したい場合は、このオブジェクトをどのように使用できま

    0

    1答えて

    Linux用のカーネルモジュールを書くときは、module_paramとその亜種がモジュールパラメータとして文字列を取り、その文字列に必要なメモリスペースが明示的に何もせずにシーンの裏に割り当てられます。私の質問は、どのようにこのメモリを扱うべきかということです。もう必要がなければ明示的に解放しなければなりませんか?モジュール内部から文字列を変更したい場合はどうしたらいいですか?文字列をmodul

    3

    1答えて

    可能性の重複:私は、デバッガについての詳細を学ぶためにしようとしている How does a debugger work? 。私は一般的なデバッグの基礎といくつかのウィンドウの低レベルの詳細を知っています。しかし、私はデバッグの実装方法の詳細について学びたいと思っています。 Windows、Linux、OSX上のハードウェアやソフトウェアの割り込みや、実行中のプロセスにデバッガを接続する方法などが

    7

    4答えて

    フォークシステムコールコードはどのように記述されますか。関数が2つの異なる値を返す方法と2つの異なるプロセスを返す方法の詳細を知りたい。要するに、forkシステムコールがどのように実装されているか知りたいですか?

    2

    1答えて

    子どもでは、fifo "sample"に書き込んで親で読み込みます。以下のコードでは、親が端末「sample」を書き込んで待機していますが、読み取り機能から終了しません。 pid_t p; int fd; char str[]="sample"; char ch; mkfifo("myfifo", FIFO_PERMS); fd = open("myfifo", O_RDWR); p

    3

    3答えて

    ファイルがディレクトリ、リンク、または通常のファイルであるかどうかを確認します。私はディレクトリをループし、各ファイルをstruct dirent *として保存します。私はd_inoをS_ISDIR(m)、S_ISLINK(m)、またはS_ISREG(m)に渡そうとしますが、ファイルにかかわらず、私は肯定的な結果を得ません。だから私の質問は:struct direntとS_ISDIR(m)をどうす

    5

    1答えて

    を呼び出します: - #include <sys/ptrace.h> #include <sys/types.h> #include <sys/wait.h> #include <unistd.h> #include <linux/user.h> /* For constants ORIG_EAX etc */ int main() { pid_t child