C言語からLinuxカーネル関数を呼び出す
Linuxカーネル関数を使用するにはシステムコールインターフェイスを経由して呼び出しを行います。システムコールとは、Linuxカーネルによって提供され、ユーザー空間プログラムからカーネル機能へアクセスするためのインターフェイスです。
ファイルを開くためにopen()システムコールを呼び出す方法を示す、サンプルコードを以下に示します。
#include <stdio.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
int main() {
int fd = open("file.txt", O_RDONLY);
if (fd == -1) {
perror("open");
return 1;
}
// 文件打开成功后,可以进行读写操作
close(fd); // 关闭文件
return 0;
}
上の例では、open() 関数は file.txt という名前のファイルを開き、ファイル記述子 fd を返します。open() 呼び出しが失敗した場合は -1 を返し、perror() 関数を使用してエラーメッセージを出力します。
read()やwrite()などのシステムコールを使って読み書きすることもできますし、 close()システムコールでファイルを閉じることができます。
各システムコールは引数や返り値が異なるので注意が必要です。各種システムコールの使い方や引数は、関連ドキュメントを確認してください。
また、fopen()やfclose()などの標準Cライブラリにおけるシステムコールのラッパー関数を使用することも可能です。これらは内部的に適切なシステムコールを呼び出してファイル操作を行います。