ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
0

How to exit node with Ctrl+C, if I/O read() is in blocking stage?

asked 2019-12-20 08:39:19 -0500

JeyP4 gravatar image

I am trying to read CANBUS on a parallel thread. I initialized canbus in main thread because I want to make sure that CAN cables are connected. By initializing, I mean setsockopt(), ioctl(), bind() to configure the socket.

void readCanbus(int soktId) {
    while(true)
        int nbytes = read(soktId, ...);
}

int main() {
    int soktId;
    someSocketSetupFn(soktId);    // it takes argument as ref

    std::thread t(readCanbus, soktId);
    while (ros::ok)
    {
        // something to do
        usleep(200);
    }
    //t.join();
}

Problem: If there is no incoming CAN messages, read() is blocked. Ctrl+C doesn't terminate the C++11 Program.

How can I make the read() terminate and so the whole program?

Terminate thread c++11 blocked on read. This post proposed a solution for POSIX. I am working on ubuntu16.04.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
0

answered 2019-12-20 10:56:01 -0500

Abhishekpg gravatar image

You can use ctrl+z to exit a program. But with this it will be still running in the background i gues. You can kill this program by kill command. Search the running program by the command

ps -ef|grep -i "your_program_name"

It will give a list of background running program with your program name. In that list 2nd column represent the pid id of your program. You can kill the program using this pid with below command.

kill -9 pid_id

Hope this helps

edit flag offensive delete link more

Comments

Thanks @Abhishekpg111. I am hoping for a clean and robust solution. E.g. using signal handler.

JeyP4 gravatar image JeyP4  ( 2019-12-20 15:53:37 -0500 )edit

I asked same question on stackoverflow. :) https://stackoverflow.com/questions/5...

JeyP4 gravatar image JeyP4  ( 2019-12-23 16:09:15 -0500 )edit

Question Tools

1 follower

Stats

Asked: 2019-12-20 08:39:19 -0500

Seen: 226 times

Last updated: Dec 20 '19