我编写了一个从USB读取数据的程序。代码是这样的:
#include "ros/ros.h"
#include <iostream>
#include <fstream>
#include <string>
int main(int argc, char **argv){
ros::init(argc, argv, "read_usb");
ros::NodeHandle nh;
ros::Rate loop_rate(100);
while(ros::ok()){
std::string str;
std::fstream openmv_cam_h7;
openmv_cam_h7.open("/dev/ttyACM0");
while(openmv_cam_h7 >> str){
std::cout << str << std::endl;
}
openmv_cam_h7.close();
ros::spinOnce();
loop_rate.sleep();
}
}当我运行这个程序的时候,它进行得很好。但是当我想通过在Ubuntu终端上按Ctrl+C (SIGTERM)来终止它时,程序继续运行。只有当我拔掉用来发送数据的USB设备时,它才会终止。
这一切为什么要发生?如果我希望程序在发送SIGTERM信号时终止,该怎么办?
附加信息:我的操作系统是Ubuntu18.04,我使用ROS旋律。
发布于 2020-07-16 04:00:41
通常情况下,按Ctrl+C会杀死你的程序,不会有任何问题。
以下是我的怀疑和解决方案:
如果
。
试试看,然后再联系我们。
https://stackoverflow.com/questions/62926554
复制相似问题