|
|
|
Аналог CreateProcess()18.04.2018, 11:40. Показов 8695. Ответов 49
Метки нет (Все метки)
Есть ли в Linux полноценный аналог виндовой CreateProcess().
Я искал, есть разные ф-ции для работы с подпроцессами, но все они как-то предоставляют только те или иные возможности. Хотелось бы получать id, работать с перенаправлением вывода - пайпами, возможности ждать завершения процесса, возможности убить процесс итп. Что наиболее близко к по ф-ционалу CreateProcess() ?
0
|
|
| 18.04.2018, 11:40 | |
|
Ответы с готовыми решениями:
49
CreateProcess с совместимостью Win95 (програмно) кроссплатформенный аналог WinApi функций (CreateProcess) CreateProcess() |
|
|
|||
| 22.04.2018, 15:02 [ТС] | |||
|
Ну дайте ссылку на ман где это показано. Добавлено через 1 минуту
0
|
|||
|
4139 / 2717 / 433
Регистрация: 09.09.2017
Сообщений: 12,050
|
|||
| 22.04.2018, 17:51 | |||
|
Вместо того чтобы кидаться дурацкими обвинениями и пытаться развести "на слабо" показывайте свой прогресс.
0
|
|||
|
4139 / 2717 / 433
Регистрация: 09.09.2017
Сообщений: 12,050
|
||
| 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
|
|||||||
|
4139 / 2717 / 433
Регистрация: 09.09.2017
Сообщений: 12,050
|
||||
| 23.04.2018, 07:24 | ||||
|
0
|
||||
| 23.04.2018, 08:43 | |
|
0
|
|
|
4139 / 2717 / 433
Регистрация: 09.09.2017
Сообщений: 12,050
|
|
| 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
|
||||
|
4139 / 2717 / 433
Регистрация: 09.09.2017
Сообщений: 12,050
|
|||||||||
| 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
|
|||||
|
4139 / 2717 / 433
Регистрация: 09.09.2017
Сообщений: 12,050
|
||||
| 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
|
||||
|
4139 / 2717 / 433
Регистрация: 09.09.2017
Сообщений: 12,050
|
||||
| 23.04.2018, 20:33 | ||||
|
Повторюсь: пусть и через задницу, но задача была решена еще в 6 посте, и с тех пор ничего лучше найдено не было.
0
|
||||
|
|
||||
| 23.04.2018, 20:42 [ТС] | ||||
|
Если Вы не поняли то что Вам сказали, то уж... Почему я так говорю про кривые руки, да потому что нормальный программист думает делает, анализирует результат - а не перебирает комбинации в надежде оно чудесным образом заработает. wine - это к все претензии разработчикам wine winXP - давно на помойке. Добавлено через 5 минут
0
|
||||
|
4139 / 2717 / 433
Регистрация: 09.09.2017
Сообщений: 12,050
|
|||||
| 23.04.2018, 21:45 | |||||
|
Ну и отсутствие совместимости между версиями windows удручает.
0
|
|||||
|
|
||||||
| 23.04.2018, 22:38 [ТС] | ||||||
|
Очевидно что если у других работает, а у Вас нет ... Я же могу поспорить что книгу не читали. Добавлено через 1 минуту Но вообще это предсказуемо. Эмулятор есть эмулятор, тестировать нужно на реальной машине и на поддерживаемой системе. Добавлено через 37 секунд Добавлено через 8 минут Вам ранее говорили обрабатывать ошибки, Вы этого не делали. Обычно WinApi ф-ции возвращают определенный результат, в случае возникновения обычно ошибки стоит вызывать GetLastError() которая даст нам код ошибки, и затем код подставить FormatMessage() что бы получить текстовое описание ошибки. Так вот если делалось правильно Вы бы знали конкретно в чем причина. Я подозреваю что какая то трабла с путем/именем канала.
0
|
||||||
|
4139 / 2717 / 433
Регистрация: 09.09.2017
Сообщений: 12,050
|
||||||
| 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
|
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
|
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения.
https:/ / habr. com/ ru/ sandbox/ 295048/
начало и оглавление
-
Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
|
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
|
|
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии
Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
|