From: Andy S. <And...@co...> - 2010-03-13 06:45:29
|
Sat Mar 13 01:44:07 EST 2010 laz...@gm... * use `runCommand` instead `forkProcess` for spawn process safely Ignore-this: 67cdbdcc06120cf98dde089405157655 hunk ./demo/embbeded/Embedded.hs 1 --- Use GtkSocket and GtkPlug for cross-process embedded. +-- |Use GtkSocket and GtkPlug for cross-process embedded. hunk ./demo/embbeded/Embedded.hs 5 +-- +-- Note: +-- +-- Don't use `forkProcess` in gtk2hs! +-- Because `forkProcess` haven't any protect when spawn process, [_$_] +-- so you will got two processes *race condition*, when those two +-- process access same resource will crash your program. +-- Solution is use `runProcess` or `runCommand` instead, [_$_] +-- Because those functions add MVar to make sure two processes won't +-- get *race condition* problem. +-- hunk ./demo/embbeded/Embedded.hs 19 -import System.Posix.Process +import System.Process hunk ./demo/embbeded/Embedded.hs 74 - forkProcess (executeFile path False [show $ fromNativeWindowId id] Nothing) + runCommand $ path ++ " " ++ (show $ fromNativeWindowId id) -- don't use `forkProcess` ! |