|
|
|
Аналог CreateProcess()18.04.2018, 11:40. Показов 8706. Ответов 49
Метки нет (Все метки)
Есть ли в Linux полноценный аналог виндовой CreateProcess().
Я искал, есть разные ф-ции для работы с подпроцессами, но все они как-то предоставляют только те или иные возможности. Хотелось бы получать id, работать с перенаправлением вывода - пайпами, возможности ждать завершения процесса, возможности убить процесс итп. Что наиболее близко к по ф-ционалу CreateProcess() ?
0
|
|
| 18.04.2018, 11:40 | |
|
Ответы с готовыми решениями:
49
CreateProcess с совместимостью Win95 (програмно) кроссплатформенный аналог WinApi функций (CreateProcess) CreateProcess() |
|
|
|||
| 22.04.2018, 15:02 [ТС] | |||
|
Ну дайте ссылку на ман где это показано. Добавлено через 1 минуту
0
|
|||
|
4142 / 2720 / 433
Регистрация: 09.09.2017
Сообщений: 12,053
|
|||
| 22.04.2018, 17:51 | |||
|
Вместо того чтобы кидаться дурацкими обвинениями и пытаться развести "на слабо" показывайте свой прогресс.
0
|
|||
|
4142 / 2720 / 433
Регистрация: 09.09.2017
Сообщений: 12,053
|
||
| 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
|
|||||||
|
4142 / 2720 / 433
Регистрация: 09.09.2017
Сообщений: 12,053
|
||||
| 23.04.2018, 07:24 | ||||
|
0
|
||||
| 23.04.2018, 08:43 | |
|
0
|
|
|
4142 / 2720 / 433
Регистрация: 09.09.2017
Сообщений: 12,053
|
|
| 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
|
||||
|
4142 / 2720 / 433
Регистрация: 09.09.2017
Сообщений: 12,053
|
|||||||||
| 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
|
|||||
|
4142 / 2720 / 433
Регистрация: 09.09.2017
Сообщений: 12,053
|
||||
| 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
|
||||
|
4142 / 2720 / 433
Регистрация: 09.09.2017
Сообщений: 12,053
|
||||
| 23.04.2018, 20:33 | ||||
|
Повторюсь: пусть и через задницу, но задача была решена еще в 6 посте, и с тех пор ничего лучше найдено не было.
0
|
||||
|
|
||||
| 23.04.2018, 20:42 [ТС] | ||||
|
Если Вы не поняли то что Вам сказали, то уж... Почему я так говорю про кривые руки, да потому что нормальный программист думает делает, анализирует результат - а не перебирает комбинации в надежде оно чудесным образом заработает. wine - это к все претензии разработчикам wine winXP - давно на помойке. Добавлено через 5 минут
0
|
||||
|
4142 / 2720 / 433
Регистрация: 09.09.2017
Сообщений: 12,053
|
|||||
| 23.04.2018, 21:45 | |||||
|
Ну и отсутствие совместимости между версиями windows удручает.
0
|
|||||
|
|
||||||
| 23.04.2018, 22:38 [ТС] | ||||||
|
Очевидно что если у других работает, а у Вас нет ... Я же могу поспорить что книгу не читали. Добавлено через 1 минуту Но вообще это предсказуемо. Эмулятор есть эмулятор, тестировать нужно на реальной машине и на поддерживаемой системе. Добавлено через 37 секунд Добавлено через 8 минут Вам ранее говорили обрабатывать ошибки, Вы этого не делали. Обычно WinApi ф-ции возвращают определенный результат, в случае возникновения обычно ошибки стоит вызывать GetLastError() которая даст нам код ошибки, и затем код подставить FormatMessage() что бы получить текстовое описание ошибки. Так вот если делалось правильно Вы бы знали конкретно в чем причина. Я подозреваю что какая то трабла с путем/именем канала.
0
|
||||||
|
4142 / 2720 / 433
Регистрация: 09.09.2017
Сообщений: 12,053
|
||||||
| 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
|
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время?
Никакой пенсии. Никакого нового. . .
|
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю
Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы
Кратко. . .
|
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем
**Полевые заметки о двухнедельной совместной работе**. . .
|
|
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики
1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
|
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928
Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
|
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего
Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
|
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы
Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
|