Подскажите, пожалуйста, реально каким-то образом вернуть строку из программы? Скажем, из одной программы я вызываю другую, которая должна передать какие-то данные в первую программу. msdn утверждает, что возвращаемый тип Main() либо void, либо int. Если какие-то варианты обхода, чтобы вернуть строку? Может быть это реально сделать как-то через идентификатор файла, в котором будет записана вся необходимая информация, и идентификатор которого будет возвращать вторая программа?
Вывод на консоль и pipe не устраивают?
echo ping 8.8.8.8 | cmd
Стандартным способом вывода информации в консольных программах является т.н. стандартный поток вывода (он же "стандартный вывод", stdout).
Вывод в него делается через семейство методов Console.Write или через объект Console.Out.
Если в первая программа запускает вторую - она может использовать перенаправление стандартного вывода (см ProcessStartInfo.RedirectStandardOutput) чтобы эту самую строку считать. Отмечу, что по соглашению, дополнительный поток, называемый stderr (доступный через Console.Error) не перенаправляется и доступен для вывода сообщений пользователю даже когда stdout перенаправлен в другую программу.
Если обе программы запускаются из оболочки командной строки - можно использовать пайпы чтобы соединить стандартный вывод одной программы со стандартным вводом другой:
program1 | program2
В такой случае все что одна программа вывела через Console.Write другая сможет считать через Console.Read.
Я думаю вам поможет MemoryMappedFile, нужные данные передавать сериализацией или другим методом. А то, что Main() возвращает int - это называется ERRORLEVEL.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей