システムコールは、Linuxディストリビューションで使用され、LinuxOSおよびプログラム内への入り口を提供します。 Linuxオペレーティングシステムは、Glibcライブラリを使用して、C言語を使用しながらシステムコールをサポートします。システムコールを使用する方法は他にもたくさんあります。この記事ガイドでは、Linuxシステムでのオープンシステムコールについて説明します。 Openシステムコールは、パスで指定されたファイルをすばやく開くために使用されています。ユーザーが作成したファイルのファイル記述子について通知します。私たちはUbuntu20.04を使用して、実践的なOpenシステムコールを取得しています。
ライブラリをインストールする
C言語では、前提条件としていくつかの追加のライブラリパッケージをインストールする必要があります。まず、manpages-devパッケージをインストールして、システムコールに関する情報を確認する必要があります。アクティビティエリアからコマンドラインターミナルを開き、以下の手順を実行してマンページをインストールします。
$ sudoaptインストールマンページ-開発者
インストール完了の出力を以下に示します。
次に、以下のようにmanコマンドを使用してopenシステムコールを確認します。
$男2開いた
Openシステムコールの出力マニュアルページを以下に示します。あなたはそれに関する追加情報を見ることができます。 qボタンを押して終了します。
上記の構文は、システムコールに追加する必要のあるライブラリの最初の3行を示しています。オープンシステムコールに使用できる構文は3つあります。最初の構文は、開かれるファイルの名前であるパス名を示しています。 2番目のパラメータflagsは、ファイルのモード(読み取りや書き込みなど)を示します。 2番目の構文は、ファイルが存在しない場合に使用できます。パラメータモードは、ファイルに対する権限を表示するために使用されます。
次に、Ubuntu 20.04LinuxディストリビューションでCコードをデバッグするためのGCCコンパイラをインストールします。そのためには、シェルで以下の命令を実行してください。
$ sudo apt install gcc
GCCコンパイラのインストールを続行するには、Yをタップする必要があります。それ以外の場合は、nボタンを押してインストールを閉じます。したがって、yボタンを押してEnterキーを押して続行します。
完了の出力を以下に示します。
例01
Openシステムコールの非常に単純な例を見てみましょう。まず、コマンドシェルを開き、次のように単純なtouchコマンドを使用して新しいテキストファイルtest.txtを作成します。
$接するtest.txt
手動でデータを追加します。以下のcatコマンドを使用して、ファイル内のデータを表示できます。
$猫test.txt
次に、以下に示すように、シェルでnanoコマンドを使用して新しいCファイルを作成しましょう。
$ナノnew.c
以下のGNUNanoファイルが開きます。以下のC言語コードを入力する必要があります。 Cコードを正しく実行するために必要なライブラリパッケージが追加されていることがわかります。その後、Openシステムコールで動作するmain関数を定義しました。 2つの整数変数を宣言しました。 n変数はバッファ値をカウントするために使用され、fdはファイル記述子に使用されます。文字型バッファ配列をサイズ50のbufとして宣言しました。openシステムコールを使用して、ファイルtest.txtからコンテンツを読み取り、ファイル記述子に返しました。 O_RDONLYは、読み取りの目的で使用されています。次の行は、バッファから10バイトを収集し、それを整数nに返すreadシステムコールを示しています。また、writeコマンドを使用して、コンテンツまたはバッファデータをファイル記述子に書き込みます。ファイル記述子は、現在の場合、出力画面です。 Ctrl + Sを使用してこのファイルを保存し、Ctrl + Xコマンドを使用してファイルを閉じます。
#含む#含む
#含む
#含む
int主要(()。
{{
intNS、fd;
charbuf[50];
fd=開いた((テスト。txt、O_RDONLY)。;
NS=読んだ((fd、buf、 10)。;
書きます((1 、buf、 10)。;
まず、以下のgccコマンドを使用して、オープンシステムコールのCコードをコンパイルしましょう。
$gccnew.c
次に、オープンシステムコールのCコードの出力を確認します。シェルで以下のa.outコマンドを使用してみましょう。出力には、ファイルtest.txtの内容から10バイトが表示されます。
$。/に。アウト
Openシステムコールを使用して、あるファイルの内容を別のファイルに書き込む別の例を見てみましょう。以下のようにnanoコマンドを使用して新しいCファイルを作成します。
$ナノ新品。NS
したがって、わずかな変更を加えたまったく同じコードを使用します。コード内で別のファイル記述子をfd1として定義しました。 1行追加することを除いて、すべてのコードは同じです。コードの最後から2行目は、openシステムコールを使用して、O_CREATとモードを使用してtargetという名前の新しいファイルを作成しました。書き込み専用はO_WRONLYです。 0642は、このファイルに割り当てられた特権を示しています。そして、ファイルは新しいファイル記述子に戻されました。次の行は、ファイル記述子に従ってバッファ内のコンテンツのバイトを書き込むコマンドを示しています。ファイルを保存して閉じます。
gcc compileコマンドを実行して、C言語ファイルをデバッグします。
$ gccnew。NSCコードの出力を表示するには、以下のようにシェルでa.out命令を試してください。出力は新しく作成されたファイルターゲットにリダイレクトされているため、出力はありません。
$。/に。アウトcatコマンドを使用してファイルターゲットのデータを確認しましょう。出力は、ファイルに20バイトが含まれていることを示しています。
$猫のターゲット
結論
上記のチュートリアルでは、gccコンパイラを使用してC言語でオープンシステムコールを使用する方法を説明しました。このガイドで説明されているさまざまな例の助けを借りて、目的のプログラムを実装することができます。