Я бы хотел изящно убить экземпляр rosbag
через терминал.В этом случае изящно означает, что файл rosbag
не имеет суффикса .active после kill.
, поэтому я делаю следующее из терминала, чтобы отправить рекомендованный SIGINT
вrosbag:
$ rosbag record /some/topic &
$ RPID=$!
$ # do some stuff
$ kill -2 $RPID
К сожалению, сумка остается активной , и может случиться так, что не все было сохранено на диске.Однако, если я поместил rosbag в файл запуска, он, похоже, сработает:
$ roslaunch rosbag_record.launch &
$ LPID=$!
$ # do some stuff
$ kill -2 $LPID
Теперь rosbag остается без изменений и хранится без суффикса active .
Теперь интересный вопрос, что я делаю не так в первом случае.Я думал, что если убить файл запуска, и в этом случае убить roscore , то получится ros::shutdown()
, который вызовет SIGINT
во всех процессах.Но ручной способ использования kill
, похоже, ведет себя иначе.