Closed
Description
Lines 108 to 134 in 500562c
Its description mentions that
Complete
should be false and Error
should not be nil if signaled.But if the underlying cmd receives a
os.Interrupt
signal, the returned status will have a true value in Complete
and a nil value in Error
Reproduce:
test script count_sec.sh
#!/bin/sh
exit_fn () {
# https://unix.stackexchange.com/questions/447229/how-can-we-set-up-a-signal-trap-to-be-sig-ign-and-sig-dfl-in-bash
trap - INT # Restore signal handling for SIGINT
echo; echo 'Catch it! Interrupt!' # Growl at user,
# Mock
# https://unix.stackexchange.com/a/99117
exit 130 # then exit script.
}
trap "exit_fn" INT # Set up SIGINT trap to call function.
count=0
while [ "$1" -ne "$count" ]
do
sleep 1
count=$((count + 1))
echo $count
done
trap - INT # Restore signal handling to previous before exit.
main function:
cmd := cmd.NewCmd("sh", "count_sec.sh", "5")
time.AfterFunc(time.Second*2, func() {
p, err := os.FindProcess(cmd.Status().PID)
if err != nil {
fmt.Println(err)
return
}
err = p.Signal(os.Interrupt)
if err != nil {
fmt.Println(err)
return
}
})
status := <-cmd.Start()
fmt.Println(status.Stdout)
fmt.Println(status.Complete)
fmt.Println(status.Error)
Metadata
Metadata
Assignees
Labels
No labels