|
|
|
Аналог CreateProcess()18.04.2018, 11:40. Показов 8671. Ответов 49
Метки нет (Все метки)
Есть ли в Linux полноценный аналог виндовой CreateProcess().
Я искал, есть разные ф-ции для работы с подпроцессами, но все они как-то предоставляют только те или иные возможности. Хотелось бы получать id, работать с перенаправлением вывода - пайпами, возможности ждать завершения процесса, возможности убить процесс итп. Что наиболее близко к по ф-ционалу CreateProcess() ?
0
|
|
| 18.04.2018, 11:40 | |
|
Ответы с готовыми решениями:
49
CreateProcess с совместимостью Win95 (програмно) кроссплатформенный аналог WinApi функций (CreateProcess) CreateProcess() |
|
|
|||
| 22.04.2018, 15:02 [ТС] | |||
|
Ну дайте ссылку на ман где это показано. Добавлено через 1 минуту
0
|
|||
|
4070 / 2704 / 433
Регистрация: 09.09.2017
Сообщений: 12,026
|
|||
| 22.04.2018, 17:51 | |||
|
Вместо того чтобы кидаться дурацкими обвинениями и пытаться развести "на слабо" показывайте свой прогресс.
0
|
|||
|
4070 / 2704 / 433
Регистрация: 09.09.2017
Сообщений: 12,026
|
||
| 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
|
|||||||
|
4070 / 2704 / 433
Регистрация: 09.09.2017
Сообщений: 12,026
|
||||
| 23.04.2018, 07:24 | ||||
|
0
|
||||
| 23.04.2018, 08:43 | |
|
0
|
|
|
4070 / 2704 / 433
Регистрация: 09.09.2017
Сообщений: 12,026
|
|
| 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
|
||||
|
4070 / 2704 / 433
Регистрация: 09.09.2017
Сообщений: 12,026
|
|||||||||
| 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
|
|||||
|
4070 / 2704 / 433
Регистрация: 09.09.2017
Сообщений: 12,026
|
||||
| 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
|
||||
|
4070 / 2704 / 433
Регистрация: 09.09.2017
Сообщений: 12,026
|
||||
| 23.04.2018, 20:33 | ||||
|
Повторюсь: пусть и через задницу, но задача была решена еще в 6 посте, и с тех пор ничего лучше найдено не было.
0
|
||||
|
|
||||
| 23.04.2018, 20:42 [ТС] | ||||
|
Если Вы не поняли то что Вам сказали, то уж... Почему я так говорю про кривые руки, да потому что нормальный программист думает делает, анализирует результат - а не перебирает комбинации в надежде оно чудесным образом заработает. wine - это к все претензии разработчикам wine winXP - давно на помойке. Добавлено через 5 минут
0
|
||||
|
4070 / 2704 / 433
Регистрация: 09.09.2017
Сообщений: 12,026
|
|||||
| 23.04.2018, 21:45 | |||||
|
Ну и отсутствие совместимости между версиями windows удручает.
0
|
|||||
|
|
||||||
| 23.04.2018, 22:38 [ТС] | ||||||
|
Очевидно что если у других работает, а у Вас нет ... Я же могу поспорить что книгу не читали. Добавлено через 1 минуту Но вообще это предсказуемо. Эмулятор есть эмулятор, тестировать нужно на реальной машине и на поддерживаемой системе. Добавлено через 37 секунд Добавлено через 8 минут Вам ранее говорили обрабатывать ошибки, Вы этого не делали. Обычно WinApi ф-ции возвращают определенный результат, в случае возникновения обычно ошибки стоит вызывать GetLastError() которая даст нам код ошибки, и затем код подставить FormatMessage() что бы получить текстовое описание ошибки. Так вот если делалось правильно Вы бы знали конкретно в чем причина. Я подозреваю что какая то трабла с путем/именем канала.
0
|
||||||
|
4070 / 2704 / 433
Регистрация: 09.09.2017
Сообщений: 12,026
|
||||||
| 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|