複数のプログラムをC言語で実行する方法
C言語で複数のプログラムを実行するには、マルチスレッドまたはマルチプロセスの方法を使用できます。
- マルチスレッド:pthread ライブラリを使用して、複数のスレッドを作成および管理します。 まず、pthread.h ヘッダファイルをインクルードする必要があります。 次に、pthread_create 関数を使用して新しいスレッドを作成し、実行する関数を指定できます。 たとえば:
- pthread.hをインクルードvoid* myFunction(void* arg) {
// ここにスレッドのコードロジック
}int main() {
pthread_t thread1, thread2;
pthread_create(&thread1, NULL, myFunction, NULL);
pthread_create(&thread2, NULL, myFunction, NULL);// 他のメインスレッドのコードロジックを実行する
// …pthread_join(thread1, NULL);
pthread_join(thread2, NULL);return 0;
} - 上記のコードは pthread_create 関数を使用して thread1 と thread2 という 2 つの新しいスレッドを作成し、関数 myFunction をスレッドのエントリーポイントとして指定しています。pthread_join 関数を使用してスレッドの終了を待機します。
- マルチプロセス:
fork関数を使って新しいプロセスを作成し、子プロセスで異なるプログラムを実行できます。たとえば: - #include <sys/types.h>
#includeint main() {
pid_t pid = fork();
if (pid == 0) {
// 子プロセス のコードロジック
execl(“/path/to/program1”, “program1”, NULL);
} else if (pid > 0) {
// 親プロセス のコードロジック
pid_t pid2 = fork();
if (pid2 == 0) {
// 2 つ目の 子プロセス のコードロジック
execl(“/path/to/program2”, “program2”, NULL);
}
} else {
// プロセス の生成に失敗
}// 主プロセス のコードロジックを実行
// …return 0;
} - fork 関数で新しいプロセスを 2 つ作成し、子プロセスは execl 関数で異なるプログラム (program1, program2) を実行します。親プロセスは別のコードのロジックの実行を継続できます。
マルチスレッドとマルチプロセスの利用は、具体的なニーズや場面に応じて選択する必要があることに注意してください。マルチスレッドは、複数のタスクを同時に実行する場合に適しており、スレッド間でメモリを共有できます。一方、マルチプロセスは、複数の独立したタスクを並行して実行する場合に適しており、各プロセスには独自のメモリ空間があります。