fork() によって作られた子プロセスが、親プロセスを終了させる場合があるでしょうか?
形としては良く見かけるもので次のようになっています。
pid_t pid = fork();
if (pid < 0) {
エラー処理
return;
} else if (pid == 0) {
子の処理 ... (1)
_exit(0);
}
/* ここが実行されない場合がある */
return;
(1)の箇所に sleep() を幾らか入れると再現しなくなります。
親子の関係で子が親へ影響を与えることがあるでしょうか?
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>この部分は問題ないと思っているのですが、少しコードを変形してみようと思います。
return文に来ないのに、親プロセスが終了しているのは、
明示的にどこかでexitしているのではないかと思ったのですが、
(それがSIGCHLDのハンドラ内だと思った)
再現性があるのなら、SIGCHLDをハンドリングしないようにして
return文に来るようになるかどうか、確認したほうがいいと思います。
コードを修正する前に。
No.1
- 回答日時:
子の状態が変化したときに飛ばす、シグナル:SIGCHLD
を親が受け取って、処理しているのではないですか?
http://www.csg.is.titech.ac.jp/~chiba/lecture/we …
この回答への補足
ご意見ありがとうございます。
SIGCHLDのハンドラはありますが、
waitpid(-1, &status, WNOHANG);
のようにゾンビ対策のみです。
この部分は問題ないと思っているのですが、少しコードを変形してみようと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) 単純なコマンドプロンプトが動きません。 2 2022/04/19 15:21
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- PHP PHPの変わった閉じタグの必要性と意味を教えてください。 1 2022/08/28 15:15
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
- Visual Basic(VBA) パーソナルXLSBのfuctionを呼び出すと「Functionが定義されていません」のエラーになる 2 2022/08/22 22:51
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- Visual Basic(VBA) 【VBA】Excelで罫線を引きたい 3 2022/07/14 12:04
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プロセスIDからウィンドウハ...
-
バックグラウンドのプロセスの...
-
プロセスIDの取得方法について
-
WebBrowserでPDF表示でのトラブル
-
共有メモリの同時アクセスにつ...
-
explorer.exeが異様にメモリを食う
-
ShellExecuteが起動したプロセ...
-
怪しいプロセス教えてください。
-
プロセスIDの再利用
-
VB6.0 SHELLで起動...
-
VB.NETで起動したExcelの閉じ方...
-
C#でのbatファイル実行結果取得
-
起動中のEXCELファイル(EXCEL...
-
実行中のプログラムIDが取得...
-
Windowsでのfork方法
-
プロセスIDに対応したファイル...
-
OSPFでプロセスを分ける意義に...
-
AppActivate関数について
-
svchost.exeはスパイウエアでし...
-
VBでエクセルを起動し、プロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バックグラウンドのプロセスの...
-
explorer.exeが異様にメモリを食う
-
タスクマネージャーのプロセス...
-
VB6.0 SHELLで起動...
-
C#でのbatファイル実行結果取得
-
プロセスのアタッチ・デタッチ...
-
プロセスIDからウィンドウハ...
-
プロセスIDの取得方法について
-
popen について
-
C++のプログラムをバックグラウ...
-
非表示になったエクセルは?
-
Windowsでのfork方法
-
別のプロセスの関数を呼び出す...
-
sleep関数の精度について
-
Visual C++からpingを実行して...
-
ADOでアクセスのレコードに...
-
C++でシェルを起動
-
SendMessageが失敗するときがある
-
ウィンドウのタイトルからプロ...
-
OSPFでプロセスを分ける意義に...
おすすめ情報