В целом, ваша проблема в том, что вы пытаетесь запустить интерактивную программу из Sublime; это не поддерживает это. Sublime захватывает вывод, который ваша программа отправляет на stdout
и stderr
, и отображает его на панели вывода, но не подключает панель к stdin
.
Итак, сценарий, с которым вы столкнулись, работает например:
Вы запускаете интерактивную программу (в вашем случае она запрашивает ввод через scanf()
, запускает и запрашивает ввод
Вы пытаетесь ввести ввод, но ничего не происходит, потому что stdin
не подключен.
Вы пытаетесь снова запустить программу (или изменить ее и собрать ее). снова думая, что у вас может быть проблема).
Версия, которую вы ранее пытались запустить, все еще работает в фоновом режиме, ожидая ввода, который вы не можете предоставить, и windows блокирует исполняемые файлы во время работы программы. Таким образом, когда компоновщик (collect2
) пытается связать исполняемый файл во время сборки, он не может этого сделать, потому что файл заблокирован, что приводит к ошибке разрешения.
Вы можете очистить ошибку, убив p программа работает в фоновом режиме, что можно сделать с помощью Tools > Cancel Build
, если вы сделаете это до появления этой ошибки ; если вы уже видели ошибку, скорее всего, она не сработает, потому что она отменяет только самую последнюю сборку, которая будет той, где произошла ошибка.
Другое, что вы можете сделать, это использовать что-то внешнее для убей это; диспетчер задач на windows, kill
из терминала на Linux / OSX и др. c. Вам нужно будет сделать это таким образом, если вы уже видите ошибку.
Обратите внимание, что это не решает основную проблему, потому что вы все еще пытаетесь запустить интерактивную программу. Чтобы сделать это из Sublime, вам нужно создать пользовательский sublime-build
, который учитывает это. Как правило, вы можете либо запустить внешний терминал и запустить там программу, либо использовать пакет типа Terminus , если хотите сохранить его внутренним.
Для того, чтобы настроить это вы должны быть знакомы с последовательностью команд, необходимых для компиляции, компоновки и запуска программы в одной команде, которую вы можете получить, проверив, какая система сборки вы используете в данный момент (при условии, что вы ее не создавали) себя).
Это видео о буферизации и интерактивных сборках в Sublime (отказ от ответственности, я автор) содержит информацию и примеры того, как Terminus можно использовать для чего-то подобного, если вы ' Мне нравится больше информации.