10

Linux でカーネル モジュールを開発する場合、C 標準ライブラリを使用することはできません。
ただし、 のような一般的な機能を使用する必要がある場合はstrcat()、どこに行く必要がありますか?

4

2 に答える 2

10

Linux カーネルに実装されていないものはすべて、自分で実装するか、別のオープン ソース カーネル モジュールから借用する必要があります。strcatただし、カーネルに実装されていることがわかります。

カーネル APIのドキュメントを参照してください。具体的には、一般的な質問のBasic C Library Functionsセクションと、特定の質問のString Manipulationstrcatセクションです。

を含める必要がありますlinux/string.h

関数を取得するためにインクルードする必要があるヘッダー ファイルがカーネル API ドキュメントに実際に表示されない理由がわかりません。ただし、何かを探している/include/linux場合は、カーネルのさまざまな部分で共有される関数が含まれている場合にヘッダー ファイルが移動する場所であるため、検索を制限することができます。

外部のヘッダー ファイルに/include/linuxは、ヘッダーと同じディレクトリにあるソース ファイルの定義のみが含まれます。例外は です/arch/.../include。これには、プラットフォームに依存しないヘッダーではなく、アーキテクチャ固有のヘッダーが含まれます。

于 2012-08-17T18:46:40.073 に答える
-1

申し訳ありません@eq - 別の関数を考えています。

なぜだめですか

void (char *d, const char *s);
{
   if (*d)
   { 
       for (; *d; ++d) {} ;
      --d;
   }
   strcpy(d, s);
}

strcpyあなたが望むなら、私はすることができます

于 2012-08-17T18:38:27.887 に答える