結論: マルチスレッド #include <stdio.h> #include <文字列.h> #include <stdlib.h> #include <pthread.h> #include <assert.h> void *fun1(void *arg) { printf("fun1 enter\n"); ながら(1) { printf("%s\n", __FUNCTION__); スリープ(1000 * 1000); } printf("fun1 exit\n"); 戻り値 ((void *)1); } void *fun2(void *arg) { printf("fun1 enter\n"); スリープ(1000 * 3000); char * ptr = (char *)malloc(sizeof(char)); printf("ptr1: 0x%x\n", ptr); ptr = NULL; printf("ptr2: 0x%x\n", ptr); 解放(ptr); memcpy(ptr, "123", 3); printf("ptr3: 0x%x\n", ptr); printf("fun2 exit\n"); 戻り値 ((void *)2); } int メイン(void) { pthread_t tid1、tid2; 整数エラー; エラー = pthread_create(&tid1, NULL, fun1, NULL); アサート(0 == エラー); エラー = pthread_create(&tid2, NULL, fun2, NULL); アサート(0 == エラー); printf("メイン結合...\n"); // getchar(); pthread_join(tid1, NULL); pthread_join(tid2, NULL); 0を返します。 } マルチプロセス #include <stdio.h> #include <文字列.h> #include <stdlib.h> #include <pthread.h> #include <assert.h> void fun(void *arg) { printf("fun1 enter\n"); スリープ(1000 * 3000); char * ptr = (char *)malloc(sizeof(char)); printf("ptr1: 0x%x\n", ptr); ptr = NULL; printf("ptr2: 0x%x\n", ptr); 解放(ptr); memcpy(ptr, "123", 3); printf("ptr3: 0x%x\n", ptr); printf("fun2 exit\n"); 戻る ; } int main(int argc, char *argv[]) { アサート(2 == argc); pid_t pid; 整数 i; i=0; i<atoi(argv[1]); i++)の場合 { pid = fork(); 0 より大きい場合 { printf("フォークエラー"); 終了(1); } そうでない場合(0 == pid) { printf("子のPIDは%luです\n", (unsigned long)getpid()); 楽しい(NULL); 終了(0); } } printf("親PIDは%lu\n", (unsigned long)getpid()); while(-1 != wait(NULL)); //すべてのサブプロセスが終了するまで待機します printf("main return\n"); getchar(); 0を返します。 } マルチスレッド クラッシュとマルチプロセス クラッシュの Linux シミュレーションに関するこの記事はこれで終わりです。マルチスレッド クラッシュとマルチプロセス クラッシュの Linux シミュレーションに関するより関連性の高い記事については、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQL における distinct と group by の違い
>>: JavaScript es6 における var、let、const の違いの詳細な説明
1. インラインスタイル仮想DOMにインラインスタイルを追加するには、式を使用してスタイルオブジェク...
データベースインデックスについては皆さんもよくご存知だと思います。 インデックスは、データベース テ...
HTML5 では、入力用のネイティブ プレースホルダー属性が追加されており、これは高度なブラウザでサ...
1. 配列のよく使われる高階関数配列があり、その配列に対して次の操作を実行したいとします。 100 ...
vue3テレポート瞬間移動機能の使用は参考用です。具体的な内容は次のとおりです。テレポートは通常、瞬...
主な機能は次のとおりです。製品情報を追加する製品情報を変更する単一の製品を削除する複数の製品を削除す...
目次1. IDEAはdockerプラグインをダウンロードします2. クラウドサーバーDocker 2...
目次外部キーテーブルの関係を決定する方法テーブル関係を作成する方法1対多の関係 - 従業員テーブルと...
プロジェクト要件: 製品ツリー ノードをクリックすると、そのノードのすべての親ノードが取得され、表に...
2.1 セマンティクス化により、Webページが検索エンジンに理解されやすくなりますこの章では、We...
1. まず、node、express、express-generator をインストールします (4...
これは純粋に CSS で実装された大きなドロップダウン メニューです。この大きなメニューは、js コ...
目次setState は同期ですか、それとも非同期ですか?カスタム合成イベントと React フック...
HTMLとは何ですか?簡単に言えば、HTML は Web ページを作成するために使用されます。とて...
序文通常、大量のデータを扱う MySQL クエリには「ページング」戦略が採用されます。ただし、ページ...