2

(簡単にどうぞ - 私は Linux の専門家ではありません)

Linux で実行されている C++ アプリケーションから syscall を直接呼び出すことを妨げるものはありますか?

プロセス間でメモリを共有することに関して、次の 2 つの「新しい」機能/機能に興味がありました。

http://lwn.net/Articles/405346/

Windows のユーザー/カーネル モードのようなセキュリティ アクセス許可に遭遇することはありますか?

4

1 に答える 1

2

C++ には、「syscall を直接呼び出す」ことを本質的に妨げるものは何もありません。read()write()open()およびその他のシステムコールを呼び出すときは、すでにそれを行っています。

いつものように、パーミッションに注意する必要があります。あなた自身のリンクから:

現在の実装では、flags 引数は使用されません。当然のことながら、copy_to_process() はターゲット プロセスのアドレス空間にデータを書き込みます。両方のプロセスが同じ所有権を持っているか、コピー プロセスが CAP_SYS_PTRACE 機能を持っている必要があります。それ以外の場合、コピーは許可されません。

したがって、これらの関数を呼び出すことはできますが、エラー コードが返される可能性があることに注意してください。そのため、適切なエラー処理が行われていることを確認してください。もちろん、これはカーネルのバージョンが実際にこれらのシステムコールをサポートしていることを前提としています。Linux を初めて使用する場合、この記事で参照されているパッチをカーネルに適用することは、おそらくあなたの能力を超えています。

于 2013-02-21T00:50:01.213 に答える