Я думаю, вы просто ищете что-то простое?
var myList = new List()
{
async() => { await Foo.GetBarAsync(); },
...
};
Я бы порекомендовал вам вместо этого изменить тип с
111 -async-lambdas /Action
наFunc
.blockquote>
Для вызова (упрощенно)
foreach (var action in myList) { await action.Invoke(); }
Для Соляриса Вы могли попробовать procfs модуль от CPAN. Даже при том, что этот модуль все еще кажется довольно молодым, эта кавычка звучит обнадеживающей:
Brian Farrell отправил очень полезный патч, который обрабатывает контроль argv и среду процессов кроме в настоящее время рабочего процесса.
Я предполагаю, что это - вероятно, просто начальная среда (точно так же, как environ
файл в соответствии с Linux), но это, кажется, то, что Вы хотите?
Иначе, хотя я вижу, что Вы говорите, что не хотите разветвляться, простое решение было бы, вероятно, для проворота ~20 строк C для создания небольшой программы, которая просто выкладывает среду на Солярисе как точный эквивалент Linux environ
файл. У меня уже есть что-то очень похожее в C. Если Вам интересно, я могу отправить его.
РЕДАКТИРОВАНИЕ (после чтения OpenSolaris pargs.c): буфер среды перераспределен в соответствии с Солярисом, когда изменения среды, таким образом, psinfo указатель может быть недопустимым. Для пуленепробиваемого решения необходимо выследить _environ. Это - все, вероятно, больше стычки, чем Вам нужно... pargs -e <pid>
могло бы быть более хорошее укрепляющее средство к UCB ps(1)
если Вы действительно идете путем ветвления, все же.
В Linux это похоже /proc/<pid>/environ
psuedofiles содержат окружать переменную, переданную, когда процесс был создан. Если у Вас есть достаточные полномочия, можно считать их.
Они, кажется, не отслеживают изменения в среде процессов после запуска.
Это предлагает, чтобы необходимо было бы разделить дамп памяти процессов для получения то, что Вы просите.
Хитрый.
Если PS может сделать, он, как Вы говорит, то Ваш ответ может быть найден где-нибудь в исходном коде PS. Это избежало бы порождения нового процесса.
Первая вещь, которая прибывает по моему мнению, использует GDB для присоединения к рассматриваемому процессу, и затем просит, чтобы GDB получил среду для Вас. Можно сделать это с "выставочной командой" среды в оболочке GDB.
Похоже, что существует модуль Perl, который может сделать это для Вас, Devel:: GDB. Я еще не попробовал его, но это похоже на Простой Вопрос Программирования для создания Devel:: объект GDB, подключение к процессу, который Вы хотите осмотреть, отправляет "выставочную команду" среды и затем анализирует результаты.
Я действительно должен сказать, хотя..., когда решение - сложный, Вы, вероятно, делаете что-то еще неправильно. Почему Вам нужна среда для вероятностного процесса, так или иначе?
Пакет GNU 'binutils' включает утилиту CLI под названием strings
. См. http://www.gnu.org/software/binutils/ для получения дополнительной информации.
strings / proc / pid / environment
- выводит хороший список переменных среды, очень похожих на env
.