X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=run.go;h=0178d726b9d9b476dbd01d1db45e713d0f5c80c0;hb=bf96757828d2ae663f5f54147c0e229f74fc9357;hp=1e8472f3602b514f9335712028411f48f5c163a0;hpb=3d1c8c53098be2c1b7c7a95368f7695164e115d1;p=goredo.git diff --git a/run.go b/run.go index 1e8472f..0178d72 100644 --- a/run.go +++ b/run.go @@ -73,6 +73,9 @@ var ( flagStderrSilent *bool TracedAll bool + + RunningProcs = map[int]*os.Process{} + RunningProcsM sync.Mutex ) func init() { @@ -140,7 +143,7 @@ func isModified(cwd, redoDir, tgt string) (bool, *Inode, error) { } return false, nil, err } - if m["Target"] != tgt { + if m["Type"] != DepTypeIfchange || m["Target"] != tgt { continue } fd, err := os.Open(path.Join(cwd, tgt)) @@ -546,6 +549,9 @@ func runScript(tgtOrig string, errs chan error, traced bool) error { errs <- runErr return } + RunningProcsM.Lock() + RunningProcs[cmd.Process.Pid] = cmd.Process + RunningProcsM.Unlock() pid := fmt.Sprintf("[%d]", cmd.Process.Pid) trace(CDebug, "%s runs %s", tgtOrig, pid) @@ -582,6 +588,9 @@ func runScript(tgtOrig string, errs chan error, traced bool) error { // Wait for job completion <-stderrTerm err = cmd.Wait() + RunningProcsM.Lock() + delete(RunningProcs, cmd.Process.Pid) + RunningProcsM.Unlock() finished = time.Now() runErr.Finished = &finished if err != nil {