У меня есть программа на C, где через tcp socket я отправляю команду процессу peer. При получении этой команды процесс peer начнет выполнять запрошенную команду. Но это занимает много времени, и я не хочу, чтобы tcp-сокет долго ждал возвращаемого значения. Я думаю, что процесс вилки поможет мне сделать это. Но, я хочу, чтобы другие способы сделать это. Поделитесь своими мыслями и опытом, связанными с этим. Пожалуйста помоги. заблаговременно,вернуть значение из функции без выхода из функции в C
ответ
В UNIX существует множество форм стратегий межпроцессного взаимодействия (IPC). Один из моих любимых - порождать дочерний процесс и получать уведомление о его кончине. Праймер на IPC можно найти here, а пример асинхронного ожидания смерти дочерних процессов можно найти here. Если вы не хотите создавать отдельный процесс, вы можете использовать named pipes, чтобы поток информации переместился между двумя процессами.
Я не хочу запускать процесс. Есть ли другой способ, с помощью которого мы можем достичь цели. – Sougrakpam
именованные каналы также могут использоваться ... системы очереди сообщений V ... да, есть миллион способов скинуть этот кот. – ojblass
Вы можете использовать поток и ждать его до тех пор, пока не появится ответ. pthread и wait будут делать только штраф (потоки - это легкие процессы).
Если вы действительно хотите это сделать, никогда не создавая процесс, вам придётся прибегнуть к чему-то вроде обратных вызовов при получении ответа TCP, это может быть доступно из библиотек обертки TCP, но включает что-то вроде этого или что-то сделать как это не имеет смысла, если вы не ожидаете много ответов. Несколько ответов ждут, что потоки прекрасны.
У меня нет ясности, что вы имеете в виду. Вы говорите, что хотите дать ответ, прежде чем знаете результат или может быть, возвращаемое значение не зависит от самого процесса. В терминах транзакционных сообщений есть два подхода: «синхронные» и «асинхронные» транзакции. Первый ждет, пока сервер завершит процесс и не даст результат, второй отправит запрос и получит токен, закроет сокет, а позже он запросит результат с этим токеном. Итак, что вы можете сделать, это предоставить запрашиваемому равному токен, где он может попросить ответ, как только процесс будет завершен. Обратите внимание, что вы можете дать ответ, который указывает, что «процесс все еще запущен, попробуйте позже». В вашем коде с кодом вы должны запрограммировать этот сценарий, дать каждому процессу число, сохранить результат с этим номером и, по запросу, с этим номером отправить результаты. Если это не подходит, более подробно объясните, что вы пытаетесь выполнить.
- 1. Как вернуть значение из функции в C?
- 2. Невозможно вернуть значение из функции
- 3. Как вернуть значение из функции?
- 4. Невозможно вернуть значение из функции
- 5. Невозможно вернуть значение из функции
- 6. вернуть значение JSON из функции?
- 7. Как вернуть значение из функции
- 8. Возможности выхода из функции
- 9. C: вернуть матрицу из функции
- 10. Как вернуть значение из функции в Java?
- 11. Как вернуть значение из функции в gwidgets
- 12. выхода из функции яваскрипта
- 13. Возврат из функции @ tornado.gen.engine без выхода?
- 14. Как вернуть ничего из функции, возвращающей значение?
- 15. Функции выхода из системы
- 16. Перейти наконец без выхода из функции/процедуры
- 17. Как вернуть значение из функции scala?
- 18. Вернуть указатель из функции
- 19. Как вернуть значение из функции, использующей setimeout?
- 20. Способ выхода из самой внешней функции из внутренней функции?
- 21. Как вернуть строку из функции в C?
- 22. Как вернуть матрицу из функции, в c?
- 23. Как вернуть Struct из функции в C#?
- 24. Невозможно вернуть структуру из функции в C
- 25. Как вернуть символ * из функции в C++
- 26. Как вернуть структуру из функции в C++?
- 27. Как вернуть строковое значение из функции в C++
- 28. Как вернуть deferred.resolve() из функции в функции
- 29. PHP не возвращает значение без функции выхода
- 30. Как вернуть значение из рекурсивной функции Python?
Что вы хотите сделать, ожидая возвращения? – Joni
после того, как команда будет успешно отправлена и получит подтверждение от однорангового процесса, я хочу закрыть это соединение, но не хочу ждать, пока одноранговый процесс выполнит команду и вернет значение. – Sougrakpam
Не удается закрыть соединение первым, а затем запустить длинную команду? – Kninnug