func (f *Fuzzer) stop() {
	log.Printf("Stopping the fuzzer")
	f.cmd.Process.Signal(syscall.SIGSTOP)
}
stop pauses the fuzz process by sending it a SIGSTOP.
package client
import (
	"fmt"
	"io"
	"log"
	"os"
	"os/exec"
	"regexp"
	"strconv"
	"strings"
	"syscall"
	"github.com/richo/roving/types"
)
var invalidFuzzerNames *regexp.Regexp
func init() {
	invalidFuzzerNames = regexp.MustCompile("[^a-zA-Z0-9_-]")
}
type Fuzzer struct {
	Id          string
	fileManager *types.AflFileManager
	started     bool
	cmd         *exec.Cmd
}
func (f *Fuzzer) run() error {
	var err error
	cwd, err := os.Getwd()
	if err != nil {
		log.Fatalf("Couldn't get cwd: %s", err)
	}
	log.Printf("Starting fuzzer in %s", cwd)
	cmd := f.cmd
	log.Printf("%s %s", cmd.Path, strings.Join(cmd.Args, " "))
	stdout, err := cmd.StdoutPipe()
	if err != nil {
		log.Fatalf("Couldn't get stdout handle: %s", err)
	}
	stderr, err := cmd.StderrPipe()
	if err != nil {
		log.Fatalf("Couldn't get stderr handle: %s", err)
	}
	if err := cmd.Start(); err != nil {
		log.Fatalf("Couldn't start fuzzer: %s", err)
	}
	go func() {
		io.Copy(os.Stdout, stdout)
	}()
	go func() {
		io.Copy(os.Stderr, stderr)
	}()
	log.Printf("Started fuzzer")
	f.started = true
	return cmd.Wait()
}