我有一个脚本,该脚本注册SIGINT陷阱并启动ffmpeg后台进程,该进程记录屏幕的一部分。 SIGINT陷阱将SIGINT信号发送到后台ffmpeg进程,以使其正常停止并完成记录。
当此脚本在终端中运行并以kill -INT [SCRIPT_PID]
从另一个终端终止时,ffmpeg后台进程将正常终止并在终端1中输出确认。
当脚本在终端中运行并以ctrl+c
停止时,后台进程立即终止。 (即使ctrl + c应该只是发送SIGINT信号)
在这种情况下,为什么ctrl + c的行为与用kill -INT
终止脚本的行为不同?
用ctrl + c结束脚本时,如何确保ffmpeg后台进程正常结束?
#!/bin/bash
exit_script() {
kill -INT $ffmpeg_pid
wait $ffmpeg_pid
printf "\n\nffmpeg should say 'exiting normally, received signal 2' before this message is printed!\n\n"
}
trap exit_script SIGINT
ffmpeg -f x11grab -s 500x500 -i :0.0+0,0 ~/video_`date +%s`.webm &
ffmpeg_pid=$!
wait
编辑:在ctrl+c
的情况下,ffmpeg似乎接收到2个int信号,但我不知道为什么