Передача аргументов в работающий файл через cmd с помощью c - PullRequest
0 голосов
/ 10 ноября 2019

Я делаю программу на C, которая управляет сервером spigot .jar, который работает с cmd. Я запускаю эту программу с помощью системного ('call to .bat file') вызова .bat-файла, и программа успешно запускается. Чтобы остановить его, я должен передать «stop» серверу и сделать это с помощью программы ac или .bat (для меня это тоже самое). Мой вопрос, как я могу это сделать? Мне нужно передать аргумент «stop», потому что когда он останавливает, все файлы безопасны, и я не могу сделать это с помощью команды taskill (я пробовал, но файлы не безопасны). Я попытался использовать функцию system () после вызова файла .bat с параметрами stop, но он не работает, пока не отключится сервер spigot с помощью команды stop. Я работаю в Windows 10.

1 Ответ

0 голосов
/ 10 ноября 2019

К сожалению, это немного сложнее для простого системного вызова.

Это потребовало бы написания плагина для вашего сервера Spigot на Java, на котором размещен его собственный сервер, который программа C затем может затемотправьте пакет, чтобы сообщить серверу Spigot о завершении работы, поскольку серверу Spigot необходимо выполнить собственную очистку, прежде чем он сможет должным образом завершить работу.

Не могу сказать наверняка, потому что я более знаком сBukkit API, но он может включать в себя модификацию сервера Spigot.

Чтобы сделать это в C, вам понадобится сетевой API (в системах POSIX он есть по умолчанию, но я не знаю о Windows)и вы написали бы клиент, который будет взаимодействовать с сервером, написанным на Java. У Java есть собственный стандартный сетевой API-интерфейс, поэтому вам не нужно об этом беспокоиться.

Если ваша программа на C просто упрощает запуск и остановку сервера, я перенесу это на Java, чтобы выне пришлось бы делать какие-то странные кросс-языковые вещи. В противном случае я бы просто запустил BAT-файл вручную.

...