Возможно ли, средствами pascalABC.NET реализовать межпроцессное взаимодействие? Первый процесс даёт команды второму. Второй их выполняет. Конечно, можно завести отдельный текстовик, куда будут писаться команды и второй процесс будет этот текстовик всё время читать, но так делать не хочется
Если на одном компе то System.IO.Pipes
. Если на разных то System.Net.Sockets
.
А файлы это не решение. Они на такое не расчитаны и должны использоваться только для сохранения информации после завершения программы.
P.S. А почему текстовик то? Вряд ли вам нужна человеко-читаемость этих комманд, лучше передавать бинарные данные.
Это документация по паскалю. А пространство имён System
и всё в нём содержащееся это часть среды .Net
.
Собственно вот первая страница что даёт гугл: System.IO.Pipes Namespace | Microsoft Docs
(но я сменил версию .Net на .Net Framework4.8, потому что под него компилирует паскаль)
Либо можете посредством external из winAPI дёрнуть PostMessage GetMessage и иже с ними, если охота низкоуровнещины. Ещё был какой-то стандартный модуль для этого дела, но не припомню названия уже
PostMessage
это подпрограмма для оконных приложений. С ней можно сделать только очень кривой аналог всего 1 пайпа на всю программу.
И необходимый уровень контроля выделения и освобождения памяти, чтобы передавать >12 байт в одном сообщении - явно не для новичков.
Если таки хочется низкоуровневости - надо сначала понять что пайпы это обёртка особых файловых дескрипторов. По сути, система создаёт виртуальный файл, существующий только в оперативной памяти. При этом на этот виртуальный файл накладываются некоторые ограничения: к примеру перемещаться по файлу нельзя и при прочтении данные из начала файла пропадают.
На сколько я помню – консоль дескриптором не обделена. Но если и она не создаётся, то можно использовать PostThreadMessage()
А то, что этот метод имеет свои тонкости – конечно. Но это везде так по сути. Тут уж кто в чём копаться любит
всё идеально работает. Именно то, что мне нужно… ещё и разобрался наконец-то, что это за system такой
Файл вполне можно использовать для IPC, если это чтото простое.
Ну а так еще есть варианты ipc через system.io.memorymappedfiles если надо много и быстро и всякие message queues и т.п.
Решение через файлы - это решение “лишь бы как-то работало”, не маштабируемое и с кучей лишних действий для компьютера. Другими словами костыль.