C言語のLinux chdirシステムコール

C Yan Yunolinux Chdirshisutemukoru



デバイスの現在の作業ディレクトリへの変更は、「CHDIR」メソッドを使用して行われます。さまざまな状況で、デバイスの現在の作業フォルダーを変更することを決定する場合があります。または、現在の作業ディレクトリではなく、フォルダから C スクリプトを実行したい場合。したがって、その特定の C コードを実行するには、現在の作業フォルダーを変更する必要があります。さらに、コーディング言語 C の「getcwd」メソッドを使用して、現在の作業フォルダがいつ変更されたかをすばやく判断できます。さて、この記事では C の chdir() 関数を使用して作業ディレクトリを変更します。

例 01:

Linux オペレーティング システムでの C の chdir() 関数の動作から始めましょう。このためには、C のコンパイラーが既に最後にマウントされていることを確認する必要があります。ほとんどの場合、Kali Linux オペレーティング システムでは C の「gcc」コンパイラを使用する傾向があります。この例から始めるには、拡張子が「c」の C ファイルが必要です。これに p1.c という名前を付け、以下に示すように Linux の「nano」エディターで開いてみました。







ファイルがエディターで開かれたら、コーディングを開始する必要があります。私たちは、C プログラムに必須の C のメイン ヘッダー ライブラリを追加することから、C プログラムを開始しました。したがって、stdio.h および unistd.h ヘッダー ライブラリを使用して、標準入力と標準出力がプログラム内で流れるようにします。 unistd.h ヘッダーは、特にこの例で必要な C の標準関数を利用するために使用されています。これで、実行時に自動的に実行されるように、このコードで C の main() ドライバー関数を開始しました。文字型配列変数「path」は100個しか格納できないため、サイズ100で定義しています。



printf() 関数ステートメントは、「getcwd()」関数を使用して、この C ファイルの現在の作業ディレクトリ フォルダーを単純に出力するために使用されています。この関数は、サイズが 100 の「path」配列変数を使用して現在の作業ディレクトリを取得し、それを printf() 関数ステートメントに渡して表示します。では、chdir() 関数を使用します。ディレクトリ内を前方に移動するか、同じディレクトリ内で後方に移動するかを指定するために、任意の種類の文字を渡すことができます。



そのため、chdir() 関数ステートメントで「..」文字を使用して、現在の作業ディレクトリから逆方向、つまり現在の作業ディレクトリの 1 レベル下に移動しようとしました。現在、Kali Linux システムのメインの「Linux」作業ディレクトリのプロジェクト フォルダで作業していることに注意してください。これで、「chdir」関数を使用した後、「project」ディレクトリではなく「Linux」ディレクトリに移動しました。ここで、「printf()」関数ステートメントで、「getcwd」関数を使用して現在の作業ディレクトリを表示しようとしました。プログラムは return 0 ステートメントで終了します。





この C プログラムを保存したら、最後に構成済みの「gcc」コンパイラを使用してコンパイルする必要があります。この gcc 命令を使用して、以下に示すように –o オプションを使用して、「p1.out」という名前のこの C ファイルのオブジェクト ファイルを作成しました。



これで、Linux 端末でそのオブジェクト ファイルを実行すると、chdir() 関数を使用する前に、まずプログラムが使用する作業ディレクトリを取得します。 chdir() 関数を使用した後、1 つ下のディレクトリに移動すると、その特定のディレクトリ「home」が表示されます。

例 02:



まったく同じヘッダー ライブラリを使用して、このプログラム コードを開始しました。このプログラムの main() 関数内では、その中で chdir() 関数を利用する「if」ステートメントを使用しています。

この関数は、「/user!=0」という条件を設定することで、「/user」がシステム内に存在するかどうかをチェックします。ディレクトリが現在のシステムに存在しない場合、perror 関数呼び出しを使用して、それぞれのエラー メッセージ、つまり「ユーザー ディレクトリが存在しません。その中で chdir() 関数を使用して、別の「if」ステートメントを利用しています。ここで chdir() 関数を使用する目的も、上記の if ステートメントで行ったのと同じで、「/temp」!=0 条件を使用してディレクトリが存在するかどうかを確認するためです。唯一の違いは、以下のコード イメージからわかるように、「/user」ではなく「/temp」という新しいディレクトリ名を使用することです。







/temp ディレクトリがシステムに存在しない場合、「if」ステートメントで使用される perror 関数は、下の画像に示すように「/temp ディレクトリが存在しません」というエラー メッセージをスローします。両方の「if」ステートメントを使用した後、このコードを C の return 0 ステートメントで終了しています。これでプログラムは終了です。実行前に Ctrl+S ショートカットを使用して C コードを保存しています。





ファイルがシステムに保存されたので、最後にマウントした「gcc」コンパイラを使用して C コードをコンパイルする必要があります。この命令を使用して、命令の -o オプションを使用してオブジェクト ファイル「p2.out」を作成しています。





作成されたオブジェクト ファイル「p2.out」を「./」文字で実行した後、「chdir」のパスに記載されている両方のディレクトリがシステムに存在しないか、シェルに表示されるエラーが実証されていることがわかりました。それを適切に。



結論

今日のこの記事では、Kali Linux オペレーティング システムで C の chdir() 関数を使用する方法を説明しました。最初の例は、chdir() 関数を使用して作業ディレクトリを変更する方法、つまり、あるディレクトリから別のディレクトリに移動する方法を示しています。 C の最後の例は、chdir() のパスで指定された現在の作業ディレクトリが存在するかどうかを確認する方法を示しています。