Как вернуть ответ от асинхронного вызова?

Как сказал Бо в своем комментарии, раздел .text доступен только для чтения по текущим системам. Чтобы этот код работал, вы должны сделать его доступным для записи. Например, вы можете использовать директиву в исходном файле:

.section wtext, "awx", @progbits

Эквивалентная nasm директива:

section wtext exec write

В качестве альтернативы, также можно передать -N переключиться на компоновщик.

Обратите внимание, что такой код оболочки обычно предназначен для выполнения стека, что является еще одной вещью, которая обычно отключается в текущих операционных системах. Если вы когда-нибудь захотите попробовать это в стеке, вам может понадобиться опция -z execstack компоновщика.

5083
задан Sparkm4n 18 July 2019 в 09:50
поделиться

1 ответ

Я думаю, какой метод или механизм, используемый, или независимо от того, что, платформа (Угловой/Реагирует), который скрывает его от Вас, следующий принцип содержит:

  1. В потоке программы (думают код или даже самый низкий уровень: машинный код), данные не могут вернуться 2 секунды спустя, 3 секунды спустя, или не могут прибыть вообще, таким образом, нет никакого обычного return для использования для возврата данных.

  2. Это - классический "шаблон"наблюдатель"". (Это может быть в форме "обратного вызова".) Это: "эй, я интересуюсь знанием успешного прибытия данных; Вы сообщили бы мне, когда это делает". Таким образом, Вы регистрируете наблюдателя, чтобы быть уведомленными (или функция, которую назовут для уведомления об успешном прибытии данных.) Вы также обычно регистрируете наблюдателя для отказа прибытия таких данных.

  3. , Когда это - успешное прибытие данных или отказ возврата таких данных, зарегистрированных наблюдателей (или обратные вызовы) уведомляют вместе с данными (или звонят с данными). Если наблюдатель будет зарегистрирован в форме функции обратного вызова foo, то foo(data) будет назван. Если наблюдатель регистрируется в форме объекта foo, то в зависимости от интерфейса, могло случиться так, что foo.notify(data) назван.

4
ответ дан 22 November 2019 в 19:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: