脳ざらし紀行


2003-07-23

_ [ネット] fork();fork();

また privoxyネタ。スレッドではなく、fork()を使うようにしたわけだけど、そうするとタブブラウザで同時に複数のページにアクセスすると引っ掛かるようになった。

ソースを見てみると、fork()を1回だけして waitpid している。これだと、ひとつのアクセスが終了するまでは次のアクセスを処理しない。2回 forkして子プロセスは exit(0) 孫プロセスが実際の処理というふうに改良。

--- jcc.c~      Tue Mar 18 01:48:59 2003
+++ jcc.c       Mon Jul 21 10:54:58 2003
@@ -2368,7 +2368,10 @@
 #ifdef FEATURE_TOGGLE
             int inherited_toggle_state = global_toggle_state;
 #endif /* def FEATURE_TOGGLE */
-
+           child_id = fork();
+           if (child_id != 0){
+             exit(0);
+           }
            serve(csp);

一時的に大量のプロセスが発生するけど、 Linux では プロセス生成だけなら Copy on Write などのおかげでコストは全然掛からないし、 privoxy 自体の処理も軽いのでまあ問題なし。

お名前:
E-mail:
コメント:
本日のリンク元

最近のコメント

2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|04|05|
2011|04|
2012|03|07|
2013|01|02|07|
トップ «前の日記(2003-07-20) 最新 次の日記(2003-07-24)» 編集