1、2つの新しいプログラミング・プロセスを作成し、それぞれの新しいプロセスは、プリントアウトするための責任があります:
(1)「こんにちは!私の父は+親プロセスIDです」
(2)「私は、子プロセスの数を+しています」
(3)50個の素数以内
2は、3つの新しいスレッドを作成するためのプログラミング、各スレッドは、メインスレッドから得られる新たなパラメータを必要とし、プリントアウトするための責任があります:
(1)「こんにちは!私の父は+親プロセスIDです」
(2)「私は、子プロセスの数を+しています」
(3)パラメータが素数であるかどうかを決定します
コードは以下の通りです
マルチプロセス
する#include <stdio.hに> する#include <unistd.h> の#include <math.h>の int型のmain(){ int型T; のため(T = 0、T <= 1 ; T ++ ){ int型 RET =フォーク()。// 新しいプロセスを作成 SLEEP(3 ); IF(RET == 0 ){ // 出力親プロセスID、子プロセス番号 のprintf(" %d個こんにちは私の父は、I AM%dの\ N-です!と" 、getppid() 、GETPID()); // 50プライム内の出力 のint I、N-; のために(私は= 2、I <=50 ; I ++ )以内 { ため(N = 2であり; n <=(INT)SQRT(I)であり; n ++ ) 場合(I%N == 0)ブレーク。 もし(N ==(INT)SQRT(I)+ 1 ) のprintf(" %dの " 、I)。} のprintf(" \ n " ); 出口(1 )。 } であれば(RET == - 1 ){ perrorは(" フォークエラー!" )。 } } 用(T = 0、T <= 1 ; T ++ ){待ち(NULL)。 } 戻り 0 。 }
マルチスレッド・コード
書式#include <stdio.hに> する#include <unistd.h> の#include <pthread.hの> する#include <stdlib.h>に含ま 書式#include <signal.hに> する#include <SYS /中syscall.h> 無効 *スレッド(無効 * 引数) { int型 N- PID; PID =(INT )のArg; のprintf(" こんにちは、父がI AMのLUは、%D%です!"、(GETPID)pthread_selfに、()); // 出力プロセスID、サブプロセス番号 // システムコール(SYS_gettid) のための(N = 2 ; N- <PID; N - ++) // それが素数であるかどうかをチェック { がiF(PIDは%N - ==0){ ブレーク;} } もし、(N == PID){ のprintf(" %dとシュシュ\ n " 、PIDが);} 他{ のprintf(" %dはないシュシュ\ n " 、PID);} pthread_exit(0)。 // 释放后资源 } int型のmain() { がpthread_t TID [ 3 ]。INT、N = 13。int型私は、 以下のための式(I = 0 ; I < 3 ; I ++ ) { int型をRET =のpthread_create(&TID [i]は、NULL、スレッド、(ボイド *)N)。// 创建线程 場合(RET)のprintf(" スレッドを作成できなかったRETた:%d \ nは!" 、RET)。 } のためには、(iは= 0 ; I < 3 ; I ++ ) はusleep(1 )。 以下のための(iは= 0 ; I < 3 ; I ++ ) pthread_joinを(TID [i]は、NULL); // 等待线程结束 リターン 0 ; }
マルチプロセス正常に実行ショット
マルチスレッド正常に実行ショット
私は病気-ください許している場合、これは、実際の使用のために純粋で、初心者の小さなコードスラグでした!