Я заметил, по крайней мере, что get_cmd_code () глючит.Я не углублялся в ваш код, поэтому исправьте это, и если у вас все еще есть проблемы, дайте мне знать.
У вас есть код, который перебирает статический массив элементов команды.Вы резервируете место для 100 элементов в начале файла (в объявлении массива), но фактически не инициализируете 100 элементов.my_commands [4] .command_name имеет значение null, поэтому его передача в strcmp () вызовет ошибку segfault.
Лучше установить постоянную k_command_count, а затем повторить цикл от 0 до k_command_count - 1. Вы также должны определитьmy_commands as my_commands [k_command_count], поэтому вы не тратите впустую память.Существуют и другие, еще более эффективные способы ведения дел, но пока вы учитесь, я предлагаю сделать это проще.