例を使用してCでgetpid関数を呼び出す

Calling Getpid Function C With Examples



Getpid()は、その関数を呼び出すプロセスのプロセスIDを取得するために使用される関数です。最初のプロセスのPIDは1で、その後、新しいプロセスごとに新しいIDが割り当てられます。これは、PIDを取得するための簡単なアプローチです。この関数は、一意のプロセスIDを取得する場合にのみ役立ちます。

IDの取得に使用される関数

ここには2種類のIDがあります。 1つは、プロセスPIDの現在のIDです。もう1つは、親プロセスPPIDのIDです。これらの関数は両方とも、ライブラリで定義されている組み込み関数です。このライブラリを使用せずにコードを実行すると、エラーが発生して実行が停止する場合があります。







Cのgetpid()関数

あるプロセスが形成されて実行されると、一意のIDが割り当てられます。これはプロセスIDです。この関数は、現在呼び出されているプロセスのIDを返すのに役立ちます。



Cのgetppid()関数

このIDは、親プロセス/関数のプロセスを返すのに役立ちます。



例1
C言語でのプロセスにおけるPIDの例を理解する。 2つのツールが必要です。テキストエディタと、コマンドを実行することになっているLinuxターミナルです。任意のテキストエディタでファイルを作成します。コードはC言語で記述されているため、ファイル名code1.cを作成したため、.c拡張子を付けて保存する必要があります。





単一のライブラリを追加しました。次に、ここでメインプログラムを開始します。メインプログラムでは、組み込み関数getpid();を呼び出します。現在のプロセスのIDを取得します。そして、変数が導入され、割り当てられます。 PID()関数の値がこの変数に格納されるように、この変数を使用して値を出力します。



ここで、このファイルの内容をLinuxターミナルで実行します。コードの前提条件は、最初にコンパイルしてから実行することです。コンパイルには、GCCが使用されます。システムにGCCがない場合は、最初にSudoコマンドを使用してGCCをインストールする必要があります。

次に、記述したコードをコンパイルします。これは、次の追加コマンドを使用して実行できます。

$ GCC –o code1 code1.c

一方、–oは、コマンドで保存ファイルを開くために使用されます。次に、–oの後にファイル名を書き込みます。

コンパイル後、コマンドを実行します。

$ ./code1

上の画像は、関数のプロセスIDを示しています。

例2
前の例では、PIDを使用します。ただし、この例では、PIDとPPIDの両方が使用されています。この関数のソースコードは、前のものとほぼ同じです。 IDの別の追加があるだけです。

プロセスIDによって割り当てられたメインプログラムの2つの変数を含むファイルについて考えてみます。 1つは現在のプロセスのもので、もう1つは親プロセスのものです。次に、最初の例と同様に、変数を介して両方のIDを出力します。

Int pid_t = getpid();
Int ppid_t = getppid();

これら2つは、コード全体の主な機能です。ここで、ファイルの作成後、次のステップはファイルをコンパイルして実行することです。コマンドでGCCを使用してコンパイルします。コンパイル後、Ubuntuのターミナルで実行します。

$ GCC –o code1 code1.c
$ ./code1

出力は、プロセスIDが最初に表示され、次に親プロセスIDが表示されることを示しています。

例3
すべてのプロセスは並行して実行および実行されます。親プロセスと子プロセスは、残りのすべての行をまとめて実行します。両方とも一度に結果を出します。ただし、Cコードでフォークを使用することにより、この関数が0未満の値を返す場合は、関数呼び出しが終了したことを意味します。

それぞれのヘッダーに2つのライブラリがある新しいファイルについて考えてみます。ここでは、if-elseステートメントを使用した条件が使用されています。メインプログラムでは、フォーク値が–ive値の場合、プロセスのIDが失敗し、取得されないというメッセージが表示されると記載されています。状況がfalseの場合、コンパイラーは条件のelse部分に移動します。この部分では、プロセスIDが取得されます。次に、このプロセスIDを表示し、プロセスIDが取得されたことを示すメッセージを表示します。ここでは、ソースコードのif-elseステートメントを引用します。

ここでも、コードをコンパイルして実行します。

./code2

出力は、else部分が実行されたことを示し、プロセスIDを出力してから、PIDメッセージを表示します。

例4

これは、同じ概念を説明する別の例です。 Fork()関数は2つの異なる値を返します。子プロセスの場合、値は0であり、これが返されます。同時に、親プロセスの場合の値は、新しい子のプロセスIDです。

この例では、同じif_else条件が使用されています。ただし、ここでは2つの条件が適用されます。ゼロ未満のPIDと他のPIDを比較するとゼロになります。 PIDがゼロ未満の場合、エラーメッセージが表示されます。一方、PIDがゼロに等しい場合、それは子プロセスであることを意味し、else部分は、PIDがゼロより大きい場合、それが親プロセスであることを示します。

次に、コードをコンパイルして実行します。

$ gcc –o code3 code3.c
$ ./ code3

出力から、else部分が最初に出力されるのは、プロセスIDが0より大きいことを意味していることがわかります。

例5
了解しました。これは、この関数の動作を説明するために上記のすべてのコードを要約しようとした最後の例です。 fork()関数でループを使用してgetpid()関数を使用することもできます。ループを使用して、多くの子プロセスを作成できます。ここでは、ループで値3を使用する必要があります。

ここでも、コードで条件ステートメントを使用する必要があります。 forループは、1から始まり、3まで繰り返されます。rd振り向く。

次に、ファイルを保存して実行します。単一のコマンドでのみコードをコンパイルして実行する別の簡単な方法があります。あれは。

$ GCC code5.c –o s&。/ code5

次に、コードの出力に向かって移動します。親プロセスのIDは、すべての子プロセスで同一です。これは、これらすべてのプロセスが1つの親に属することを意味します。ループは3に制限されているため、これらのプロセスは次々に実行されます。3回の反復のみが実行されます。

結論

この記事には、基本的な知識と、LinuxコマンドでのgetPID()関数の動作が含まれています。一意のIDは、この関数を介して各プロセスに割り当てられます。