> On Nov 9, 2016, at 1:47 AM, Aaron Conole <acon...@redhat.com> wrote: > > nickcooper-zhangtonghao <n...@opencloud.tech <mailto:n...@opencloud.tech>> > writes: > >> Signed-off-by: nickcooper-zhangtonghao <n...@opencloud.tech >> <mailto:n...@opencloud.tech>> >> --- >> utilities/ovs-tcpdump.in | 5 ++++- >> 1 file changed, 4 insertions(+), 1 deletion(-) >> >> diff --git a/utilities/ovs-tcpdump.in b/utilities/ovs-tcpdump.in >> index c189bc8..d03568d 100755 >> --- a/utilities/ovs-tcpdump.in >> +++ b/utilities/ovs-tcpdump.in >> @@ -432,9 +432,12 @@ def main(): >> print(data) >> raise KeyboardInterrupt >> except KeyboardInterrupt: >> - pipes.terminate() >> + if pipes.poll() is None: >> + pipes.terminate() >> + >> ovsdb.destroy_mirror('m%s' % interface, ovsdb.port_bridge(interface)) >> ovsdb.destroy_port(mirror_interface, ovsdb.port_bridge(interface)) > >> + sys.exit(1) > > NAK to this - this will make the normal termination path read like an error > on the terminal. > > Try it out: > > ovs-tcpdump -i port0 -c 1 > echo $?
Hi Aaron Thanks for your reply. If you run the ovs-tcpdump with invalid option or option without an argument, sometimes ovs-tcpdump will crash. When run the “pipes.terminate()”, parent process does’t known whether the subprocess has exited. We should check it before running the “pipes.terminate()”. For example: # ovs-tcpdump -i eth1 -nnn -w tcpdump: option requires an argument -- 'w' tcpdump version 4.5.1 libpcap version 1.5.3 Usage: tcpdump [-aAbdDefhHIJKlLnNOpqRStuUvxX] [ -B size ] [ -c count ] [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ] [ -i interface ] [ -j tstamptype ] [ -M secret ] [ -P in|out|inout ] [ -r file ] [ -s snaplen ] [ -T type ] [ -V file ] [ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z command ] [ -Z user ] [ expression ] Traceback (most recent call last): File "/root/ovs_master_dev_new/utilities/ovs-tcpdump.py", line 453, in <module> main() File "/root/ovs_master_dev_new/utilities/ovs-tcpdump.py", line 439, in main pipes.terminate() File "/usr/lib64/python2.7/subprocess.py", line 1551, in terminate self.send_signal(signal.SIGTERM) File "/usr/lib64/python2.7/subprocess.py", line 1546, in send_signal os.kill(self.pid, sig) OSError: [Errno 3] No such process and # ovs-tcpdump -i eth1 -nnn -1 tcpdump: invalid option -- '1' tcpdump version 4.5.1 libpcap version 1.5.3 Usage: tcpdump [-aAbdDefhHIJKlLnNOpqRStuUvxX] [ -B size ] [ -c count ] [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ] [ -i interface ] [ -j tstamptype ] [ -M secret ] [ -P in|out|inout ] [ -r file ] [ -s snaplen ] [ -T type ] [ -V file ] [ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z command ] [ -Z user ] [ expression ] Traceback (most recent call last): File "/root/ovs_master_dev_new/utilities/ovs-tcpdump.py", line 453, in <module> main() File "/root/ovs_master_dev_new/utilities/ovs-tcpdump.py", line 439, in main pipes.terminate() File "/usr/lib64/python2.7/subprocess.py", line 1551, in terminate self.send_signal(signal.SIGTERM) File "/usr/lib64/python2.7/subprocess.py", line 1546, in send_signal os.kill(self.pid, sig) OSError: [Errno 3] No such process Thanks. Nick _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev