[#25807] Pograming Ruby — Yoshimasa Kusano <dingo@...>

18 messages 2000/11/05

[#25856] new host at ruby-lang.org (or rubyist.org) — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

12 messages 2000/11/09

[#25874] 子プロセスから標準出力と終了ステータスを得たい — yharuo@...7.dddd.ne.jp

はるおと申します。

88 messages 2000/11/10
[#25875] Re: 子プロセスから標準出力と終了ステータスを得たい — matz@... (Yukihiro Matsumoto) 2000/11/10

まつもと ゆきひろです

[#25876] Re: 子プロセスから標準出力と終了ステータスを得たい — WATANABE Hirofumi <eban@...> 2000/11/10

わたなべです.

[#25879] Re: 子プロセスから標準出力と終了ステータスを得たい — yharuo@...7.dddd.ne.jp 2000/11/10

はるおです。

[#25880] Re: 子プロセスから標準出力と終了ステータスを得たい — Nibu <nibu@...> 2000/11/10

newです.

[#25907] Re: 子プロセスから標準出力と終了ステータスを得たい — yharuo@...7.dddd.ne.jp 2000/11/13

はるおです。

[#25909] Re: 子プロセスから標準出力と終了ステータスを得たい — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/11/13

なかだです。

[#25910] Re: 子プロセスから標準出力と終了ステータスを得たい — yharuo@...7.dddd.ne.jp 2000/11/13

はるおです。

[#25912] Re: 子プロセスから標準出力と終了ステータスを得たい — Nibu <nibu@...> 2000/11/13

newです.

[#25914] Re: 子プロセスから標準出力と終了ステータスを得たい — yharuo@...7.dddd.ne.jp 2000/11/13

はるおです。

[#25916] Re: 子プロセスから標準出力と終了ステータスを得たい — Nibu <nibu@...> 2000/11/13

newです.

[#25917] Re: 子プロセスから標準出力と終了ステータスを得たい — yharuo@...7.dddd.ne.jp 2000/11/13

はるおです。

[#25923] Re: 子プロセスから標準出力と終了ステータスを得たい — WATANABE Hirofumi <eban@...> 2000/11/13

わたなべです.

[#25926] Re: 子プロセスから標準出力と終了ステータスを得たい — matz@... (Yukihiro Matsumoto) 2000/11/13

まつもと ゆきひろです

[#25929] Re: 子プロセスから標準出力と終了ステータスを得たい — Hideto ISHIBASHI <hideto-i@...4u.or.jp> 2000/11/13

石橋秀仁です。

[#25938] Re: 子プロセスから標準出力と終了ステータスを得たい — Takahiro Kambe <taca@...> 2000/11/14

標準の細かなことは知りませんが、

[#25943] Re: 子プロセスから標準出力と終了ステータスを得たい — yharuo@...7.dddd.ne.jp 2000/11/14

はるおです。

[#25951] Re: 子プロセスから標準出力と終了ステータスを得たい — Shugo Maeda <shugo@...> 2000/11/14

前田です。

[#25954] Re: 子プロセスから標準出力と終了ステータスを得たい — yharuo@...7.dddd.ne.jp 2000/11/14

はるおです。

[#25956] Re: 子プロセスから標準出力と終了ステータスを得たい — Shugo Maeda <shugo@...> 2000/11/14

前田です。

[#25962] Re: 子プロセスから標準出力と終了ステータスを得たい — yharuo@...7.dddd.ne.jp 2000/11/14

はるおです。

[#25976] Re: 子プロセスから標準出力と終了ステータスを得たい — matz@... (Yukihiro Matsumoto) 2000/11/14

まつもと ゆきひろです

[#25998] Re: 子プロセスから標準出力と終了ステータスを得たい — yharuo@...7.dddd.ne.jp 2000/11/16

はるおです。

[#26009] Re: 子プロセスから標準出力と終了ステータスを得たい — matz@... (Yukihiro Matsumoto) 2000/11/16

まつもと ゆきひろです

[#26013] Re: 子プロセスから標準出力と終了ステータスを得たい — yharuo@...7.dddd.ne.jp 2000/11/16

はるおです。

[#26015] Re: 子プロセスから標準出力と終了ステータスを得たい — matz@... (Yukihiro Matsumoto) 2000/11/16

まつもと ゆきひろです

[#26016] Re: 子プロセスから標準出力と終了ステータスを得たい — yharuo@...7.dddd.ne.jp 2000/11/16

はるおです。

[#26017] Re: 子プロセスから標準出力と終了ステータスを得たい — matz@... (Yukihiro Matsumoto) 2000/11/16

まつもと ゆきひろです

[#26018] Re: 子プロセスから標準出力と終了ステータスを得たい — yharuo@...7.dddd.ne.jp 2000/11/16

はるおです。

[#26023] Re: 子プロセスから標準出力と終了ステータスを得たい — Takahiro Kambe <taca@...> 2000/11/16

In message <20001116164843.7086.YHARUO@mail7.dddd.ne.jp>

[#25934] Re: 子プロセスから標準出力と終了ステータスを得たい — WATANABE Hirofumi <eban@...> 2000/11/14

わたなべです.

[#25913] Re: 子プロセスから標準出力と終了ステータスを得たい — WATANABE Hirofumi <eban@...> 2000/11/13

わたなべです.

[#25919] Re: 子プロセスから標準出力と終了ステータスを得たい — WATANABE Hirofumi <eban@...> 2000/11/13

わたなべです.

[#25924] Re: 子プロセスから標準出力と終了ステータスを得たい — yharuo@...7.dddd.ne.jp 2000/11/13

はるおです。

[#26012] reference manual to WiKi — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

42 messages 2000/11/16
[#26051] Re: reference manual to WiKi — Koji Arai <JCA02266@...> 2000/11/16

新井です。

[#26090] Re: reference manual to WiKi — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/11/17

なひです。

[#26105] Re: reference manual to WiKi — Koji Arai <JCA02266@...> 2000/11/18

新井です。

[#26279] Re: reference manual to WiKi — Koji Arai <JCA02266@...> 2000/12/03

新井です。

[#26069] Ruby デスクトップリファレンス — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

17 messages 2000/11/17

[#26156] fork problem? — Tanaka Akira <akr@...17n.org>

ふと気がついたのですが、fork した子プロセス内で例外が発生すると、外側

82 messages 2000/11/25
[#26160] Re: fork problem? — matz@... (Yukihiro Matsumoto) 2000/11/25

まつもと ゆきひろです

[#26163] Re: fork problem? — Tanaka Akira <akr@...17n.org> 2000/11/25

In article <E13zgAK-0005kt-00@ev.netlab.zetabits.co.jp>,

[#26165] Re: fork problem? — matz@... (Yukihiro Matsumoto) 2000/11/25

まつもと ゆきひろです

[#26173] Re: fork problem? — nobu.nakada@... 2000/11/25

なかだです。

[#26176] Re: fork problem? — Tanaka Akira <akr@...17n.org> 2000/11/26

In article <200011252247.HAA09258@sharui.nakada.kanuma.tochigi.jp>,

[#26179] Re: fork problem? — nobu.nakada@... 2000/11/26

なかだです。

[#26182] Re: fork problem? — matz@... (Yukihiro Matsumoto) 2000/11/26

まつもと ゆきひろです

[#26188] Re: fork problem? — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/11/27

なかだです。

[#26190] Re: fork problem? — SHUDO Kazuyuki <shudoh@...> 2000/11/27

なかださん wrote:

[#26191] Re: fork problem? — Takahiro Kambe <taca@...> 2000/11/27

In message <200011270410.NAA09803@cafe.muraoka.info.waseda.ac.jp>

[#26192] Re: fork problem? — Tanaka Akira <akr@...17n.org> 2000/11/27

In article <200011270426.NAA08013@edge.sky.yamashina.kyoto.jp>,

[#26196] Re: fork problem? — matz@... (Yukihiro Matsumoto) 2000/11/27

まつもと ゆきひろです

[#26207] Re: fork problem? — Nakamura Akifumi <BXQ04723@...> 2000/11/27

[#26209] Re: fork problem? — matz@... (Yukihiro Matsumoto) 2000/11/28

まつもと ゆきひろです

[#26212] Re: fork problem? — Nakamura Akifumi <BXQ04723@...> 2000/11/28

[#26213] Re: fork problem? — matz@... (Yukihiro Matsumoto) 2000/11/28

まつもと ゆきひろです

[#26218] Re: fork problem? — Nakamura Akifumi <BXQ04723@...> 2000/11/28

[#26223] Re: fork problem? — matz@... (Yukihiro Matsumoto) 2000/11/28

まつもと ゆきひろです

[#26256] Re: fork problem? — Nakamura Akifumi <BXQ04723@...> 2000/12/02

[#26257] Re: fork problem? — Masato KIYAMA <masato@...> 2000/12/02

木山です.

[#26266] Re: fork problem? — Takahiro Kambe <taca@...> 2000/12/02

余談ですが、

[#26270] Re: fork problem? — Nakamura Akifumi <BXQ04723@...> 2000/12/02

[#26318] Re: fork problem? — Takahiro Kambe <taca@...> 2000/12/04

In message <3A2926E4316.F02D.BXQ04723@nifty.ne.jp>

[#26460] Re: fork problem? — Kazuyuki Shudo <shudoh@...> 2000/12/08

首藤です。

[#26465] Re: fork problem? — Nakamura Akifumi <BXQ04723@...> 2000/12/09

[#26467] Re: fork problem? — matz@... (Yukihiro Matsumoto) 2000/12/09

まつもと ゆきひろです

[#26488] Re: fork problem? — WATANABE Tetsuya <tetsu@...> 2000/12/11

渡辺哲也です。

[#26492] Re: fork problem? — Nakamura Akifumi <BXQ04723@...> 2000/12/11

[#26850] Re: fork problem? — Kazuyuki Shudo <shudoh@...> 2000/12/25

首藤です。

[#26258] Re: fork problem? — Takahiro Kambe <taca@...> 2000/12/02

In message <3A287422384.A2B9.BXQ04723@nifty.ne.jp>

[ruby-list:26179] Re: fork problem?

From: nobu.nakada@...
Date: 2000-11-26 14:05:12 UTC
List: ruby-list #26179
なかだです。

At Sun, 26 Nov 2000 15:41:14 +0900,
Tanaka Akira <akr@m17n.org> wrote:
> (書くのを忘れていたので追記しておきますが、殺すのは子プロセス側での話
> で、親プロセス側では当然、動いたままです。)

  これは当然ですね。

> で、疑問なのはプロセス外との通信を(直接には)行なわない thread について
> です。thread プログラミングは素人(じつは今回初めて thread を使った)な
> のでよくわからないのですが、そういうものは fork 時にどのような振舞を示
> すのが適切なことが多いんでしょうか? それともそんな thread は普通使われ
> ない?

  thread というのは単一のプロセスを共有するのが特徴なわけで、プ
ロセスを跨いだ thread というもの自体がそもそもあるはずがないと
思いますが。

  で、こんな感じで考えてみました。


diff -up current/eval.c devel/eval.c
--- current/eval.c	Thu Nov 23 23:19:11 2000
+++ devel/eval.c	Sun Nov 26 13:03:53 2000
@@ -6732,6 +6732,7 @@ thread_free(th)
     if (th->stk_ptr) free(th->stk_ptr);
     th->stk_ptr = 0;
     if (th->locals) st_free_table(th->locals);
+    th->locals = 0;
     if (th->status != THREAD_KILLED) {
 	if (th->prev) th->prev->next = th->next;
 	if (th->next) th->next->prev = th->prev;
@@ -8329,6 +8330,34 @@ thgroup_add(group, thread)
 
     th->gid = data->gid;
     return group;
+}
+
+int
+rb_sys_fork()
+{ 
+   int pid = fork();
+
+    if (pid == 0) {
+	rb_thread_t th;
+
+	main_thread = curr_thread;
+	FOREACH_THREAD(th) {
+	    if (th != curr_thread) {
+		rb_thread_ready(th);
+		th->status = THREAD_KILLED;
+		if (th->stk_ptr) free(th->stk_ptr);
+		th->stk_ptr = 0;
+		if (th->locals) st_free_table(th->locals);
+		th->locals = 0;
+		th->gid = 0;
+		th->priority = 0;
+	    }
+	}
+	END_FOREACH(th);
+	curr_thread->prev = curr_thread->next = curr_thread;
+    }
+
+    return pid;
 }
 
 void
diff -up current/intern.h devel/intern.h
--- current/intern.h	Thu Nov 23 23:19:11 2000
+++ devel/intern.h	Sun Nov 26 09:31:07 2000
@@ -167,6 +167,7 @@ VALUE rb_thread_current _((void));
 VALUE rb_thread_main _((void));
 VALUE rb_thread_local_aref _((VALUE, ID));
 VALUE rb_thread_local_aset _((VALUE, ID, VALUE));
+int rb_sys_fork _((void));
 /* file.c */
 int eaccess _((const char*, int));
 VALUE rb_file_s_expand_path _((int, VALUE *));
diff -up current/process.c devel/process.c
--- current/process.c	Mon Nov 13 23:19:12 2000
+++ devel/process.c	Sun Nov 26 15:14:35 2000
@@ -534,14 +534,15 @@ rb_f_fork(obj)
     int pid;
 
     rb_secure(2);
-    switch (pid = fork()) {
+    switch (pid = rb_sys_fork()) {
       case 0:
 #ifdef linux
 	after_exec();
 #endif
 	if (rb_block_given_p()) {
-	    rb_yield(Qnil);
-	    _exit(0);
+	    int status;
+	    rb_protect(rb_yield, Qnil, &status);
+	    _exit(status ? -1 : 0);
 	}
 	return Qnil;
 


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread