我有一個去功能捕獲網絡通訊量在MacOS tcpdumb(外部命令):使用tcpdump作爲外部命令:如何正確關閉外部命令?
func start_tcpdump() {
// Run tcpdump with parameters
cmd := exec.Command("tcpdump", "-I", "-i", "en1", "-w", "capture.pcap")
if err := cmd.Start(); err != nil {
log.Fatal(err)
}
timer := time.AfterFunc(3 * time.Second, func() {
cmd.Process.Kill()
})
err := cmd.Wait()
if err != nil{
log.Fatal(err)
}
timer.Stop()
}
當此功能完整的作品,我想在Wireshark來打開輸出文件.pcap和得到這個錯誤: 「 捕獲文件似乎已經在數據包的中間被切斷短」
也許, cmd.Process.Kill()中斷.pcap文件的正確關閉。
什麼解決方案可以適用於「適當」關閉tcpdumb外部進程?
tcpdump表示通過SIGINT或SIGTERM正常退出。也許讀取stdout和stderr來查看是否有任何相關消息。 – JimB