|
|
|
Аналог CreateProcess()18.04.2018, 11:40. Показов 8911. Ответов 49
Метки нет (Все метки)
Есть ли в Linux полноценный аналог виндовой CreateProcess().
Я искал, есть разные ф-ции для работы с подпроцессами, но все они как-то предоставляют только те или иные возможности. Хотелось бы получать id, работать с перенаправлением вывода - пайпами, возможности ждать завершения процесса, возможности убить процесс итп. Что наиболее близко к по ф-ционалу CreateProcess() ?
0
|
|
| 18.04.2018, 11:40 | |
|
Ответы с готовыми решениями:
49
CreateProcess с совместимостью Win95 (програмно) кроссплатформенный аналог WinApi функций (CreateProcess) CreateProcess() |
|
|
|||
| 22.04.2018, 15:02 [ТС] | |||
|
Ну дайте ссылку на ман где это показано. Добавлено через 1 минуту
0
|
|||
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,097
|
|||
| 22.04.2018, 17:51 | |||
|
Вместо того чтобы кидаться дурацкими обвинениями и пытаться развести "на слабо" показывайте свой прогресс.
0
|
|||
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,097
|
||
| 22.04.2018, 22:37 | ||
|
Повторяю: я не собираюсь давать готовое решение. Учитесь наконец пользоваться документацией. Линуксовая документация это вам не msdn, там все просто. Команды документированы (и эта документация вшита в систему!), оперируют парой аргументов и отвечают только за то что им надо. В отличие от ужаса из msdn где у каждой команды десяток аргументов без вменяемых пояснений о назначении. Почитайте ман на pipe. Для чего используется, что принимает и что возвращает. Почитайте ман на fork: что происходит с дескрипторами открытых файлов. После этого покажите свое понимание как это должно работать.
0
|
||
|
|
|||||||
| 22.04.2018, 23:09 [ТС] | |||||||
|
Я задал довольно конкретный вопрос Вы же мне гоните порожняк, а потом удивляетесь.
К чему спрашивается? Я понимаю когда человек спрашивает что неконкретное и его гонят в гугл и в доку. Но вопрос вполне конкретен и однозначен. Не знает лучше промолчите. Добавлено через 3 минуты Допусти у меня есть моя программы мне из нее нужно вызвать какую нибудь стандартную утилиту туже ls или ping при чем не засерая в своей программе вывод и не задействуя файлов и прочих костылей. Но к примеру нужно вывести проанализированный вывод к примеру список файлов без всего лишнего или результат пинга. Добавлено через 9 минут Под виндой я делаю это приблизительно так:
Не по теме: Полный код тут https://github.com/Avazart/Bic... rocess.cpp
0
|
|||||||
|
Диванный эксперт
|
|||||||
| 23.04.2018, 00:13 | |||||||
|
Avazart,
dup2Алгоритм примерно следующий: В родителе:
первый попавшийся в гугле пример pipe fork dup2 exec
1
|
|||||||
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,097
|
||||
| 23.04.2018, 07:24 | ||||
|
0
|
||||
| 23.04.2018, 08:43 | |
|
0
|
|
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,097
|
|
| 23.04.2018, 10:06 | |
|
Поэтому надо читать документацию, читать код авторов этой ОС, а не побираться на форумах. Да еще с таким видом как будто ему должны. Вы же сами по первым ссылкам в гугле нашли готовый пример, что мешало ТСу сделать тоже самое?
. А так у меня была полностью симметричная ситуация. Пытался найти как через winapi настроить неблокирующие каналы (non-blocking pipes), чтобы если канал переполнился, программа не ждала его очистки, а сама решала что делать. Пару недель бился лбом в стену msdn'а и гугла, _потом_ спросил на форуме (за что какие-то неадекватные личности решили заминусовать). В конце концов плюнул и решил задачу через... ну, другим способом, в общем. А нормального решения так и нет. Не понимаю, виндузятники вообще неблокирующими каналами не пользуются что ли? Это к тому что даже для чужой операционки сначала поискать решение самому... или выяснить что задача какая-то нетипичная и стоит переформулировать подход.
0
|
|
|
|
|
| 23.04.2018, 15:11 | |
|
0
|
|
|
|
||||
| 23.04.2018, 15:54 [ТС] | ||||
|
http://man7.org/linux/man-page... awn.3.html Я как то тоже задавал тему по пайпам в этом разделе и Убежденный мне вполне помог.
0
|
||||
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,097
|
|||||||||
| 23.04.2018, 16:21 | |||||||||
|
pipe(fd) создает канал, причем на запись открывается файловый дескриптор fd[1], а на чтение - fd[0] fork() клонирует процесс, оставляя все файловые дескрипторы на своих местах, то есть открытые предыдущей командой fd[0] в родителе на чтение, fd[1] на запись, плюс fd[0] в потомке на чтение и fd[1] на запись. dup2(oldfd, newfd) добавляет открытому файлу новый дескриптор. В моем примере в качестве второго выступает stdout, а в качестве первого - открытый файл. Но никто не мешает вместо обычного файла подложить канал: dup(fd[1], STDOUT_FILENO); Потом закрываем все лишние дескрипторы: close(fd[1]); в родителе и close(fd[0]); close(fd[1]); в потомке. exec() подменяет вызывающий процесс на то что ему передано, не трогая открытых дескрипторов. ВСЕ! Вот весь код:
Не по теме: В то же время отсутствие вообще хоть какого-то кода, хотя бы попыток решения в этой теме это норма
0
|
|||||||||
|
|
|||||
| 23.04.2018, 16:29 [ТС] | |||||
|
Добавлено через 3 минуты "Не сработали" по тому что руки кривые, я всегда так говорю когда человек не показывает что делает, как исправил и что именно не сработало, никто не может телепатически угадать что Вы на гавнокодили что не работает. По тому коду который Вы выложили можно сказать что это именно так. Не приперались бы Вам бы указали конкретно в каких строчках кода ошибки и что не так. Добавлено через 2 минуты
0
|
|||||
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,097
|
||||
| 23.04.2018, 18:22 | ||||
man fork man exec man dup man pipe ?Повторяю: эти функции достаточно просты и независимы, в них нет десятка невнятных параметров. 80% кода было приведено мной ранее и дана подсказка вместо обычного файла подсовывать функции dup2() выхлоп функции pipe(). Я просто не представляю, как еще понятнее можно было подсказать, не приводя готового кода. Кроме того, в отличие от вас я привел свой вариант кода и попытки решения.
0
|
||||
|
|
||||
| 23.04.2018, 18:43 [ТС] | ||||
|
Кроме того если MSDN не помогает можно почитать книги, Убежденный Вам указал какую. Так же поискать в это книге Рихтера. Более того в Ваше коде который Вы выложили после так и не появилось проверок, а структура OVERLAPPED используется неправильно. Добавлено через 1 минуту http://man7.org/linux/man-page... awn.3.html чем не ссылка?
0
|
||||
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,097
|
||||
| 23.04.2018, 20:33 | ||||
|
Повторюсь: пусть и через задницу, но задача была решена еще в 6 посте, и с тех пор ничего лучше найдено не было.
0
|
||||
|
|
||||
| 23.04.2018, 20:42 [ТС] | ||||
|
Если Вы не поняли то что Вам сказали, то уж... Почему я так говорю про кривые руки, да потому что нормальный программист думает делает, анализирует результат - а не перебирает комбинации в надежде оно чудесным образом заработает. wine - это к все претензии разработчикам wine winXP - давно на помойке. Добавлено через 5 минут
0
|
||||
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,097
|
|||||
| 23.04.2018, 21:45 | |||||
|
Ну и отсутствие совместимости между версиями windows удручает.
0
|
|||||
|
|
||||||
| 23.04.2018, 22:38 [ТС] | ||||||
|
Очевидно что если у других работает, а у Вас нет ... Я же могу поспорить что книгу не читали. Добавлено через 1 минуту Но вообще это предсказуемо. Эмулятор есть эмулятор, тестировать нужно на реальной машине и на поддерживаемой системе. Добавлено через 37 секунд Добавлено через 8 минут Вам ранее говорили обрабатывать ошибки, Вы этого не делали. Обычно WinApi ф-ции возвращают определенный результат, в случае возникновения обычно ошибки стоит вызывать GetLastError() которая даст нам код ошибки, и затем код подставить FormatMessage() что бы получить текстовое описание ошибки. Так вот если делалось правильно Вы бы знали конкретно в чем причина. Я подозреваю что какая то трабла с путем/именем канала.
0
|
||||||
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,097
|
||||||
| 24.04.2018, 07:30 | ||||||
|
Отсюда вывод: на большинство компьютеров можно безболезненно поставить последнюю версию системы. Если не использовать особенности, реализованные в более поздних версиях, то проблем не возникает (разницу с winxp vs win7 сами видите: формально эти функции есть и там и там, по факту работает только в win7). Даже если проблема возникает, есть достаточно документации (опять же в отличие от winapi) чтобы это исправить. Или есть конкретный пример травмы детства? . В общем, пока не продемонстрируете что это у меня руки кривые и в документации было явно написано как это сделать. Ну примерно как с моим примером по pipe + fork + dup + exec. Вот тогда и приходите.
0
|
||||||
| 24.04.2018, 07:30 | |
|
CreateProcess CreateProcess CreateProcess CreateProcess CreateProcess Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|
|
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки.
Добавлены следующие реквизиты типа Булево:
- Буквы;
- Цифры;
- Символы.
Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей.
Самым главным критерием для. . .
|
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store.
И так:
1. Скачиваем с. . .
|
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге).
Задача:
Программно добавить префикс в нумерацию документов.
Решение:
В модуле объекта. . .
|