LINUX.ORG.RU

std C++ and Unix

 , , , ,


1

3

Существуют ли решения в стандартной библиотеке С/С++ для создания нового процесса с заменой и без замены среды выполнения под Linux? Некая альтернатива библиотеке unistd.h с ее exec*() и fork(). Сам использую С++, и смущает то, что unistd - чисто сишная библиотека, которая не является частью языка, без порта на С++ Что-то помимо std::system есть?


Сам использую С++, и смущает то, что unistd - чисто сишная библиотека, которая не является частью языка, без порта на С++

Может просто отключить понты? Ты можешь обернуть exec и fork в классы, если прямо так хочется.

Ну и да, unistd.h это не библиотека, а хедер из стандарта POSIX.

a1batross ★★★★★
()
Последнее исправление: a1batross (всего исправлений: 1)
Ответ на: комментарий от xaizek

Ещё бы целый жырнобуст тащить ради, цитирую, «создания нового процесса с заменой и без замены среды выполнения под Linux».

a1batross ★★★★★
()
Ответ на: комментарий от a1batross

А может там имелось ввиду: библиотеке заголовочного файла "... .h"? По твоему порт С библиотек на С++ заключается в обертке их классами? И, может ты не заметил, там обособленное определение, и имелось ввиду, что unistd - не часть языка С тоже.

Rot1
() автор топика
Ответ на: комментарий от Rot1

Внезапно, ты можешь вообще воспользоваться сисколлами. Только я не думаю, что ты сисколлы сможешь по-настоящему портировать на С++. Чтобы без обёрток и вообще.

Не часть языка С, но когда вопрос стоит именно «под Linux», то зачем ограничиваться? Вот если нужна кроссплатформа, то уже можно задуматься о том, что делать с Windows, например, где никакого unistd.h нет.

Если конечно вопрос стоит именно только о стандартных библиотках языка, то нет, кроме system() у тебя ничего нет.

a1batross ★★★★★
()

Альтернатив exec* и fork нет, т.к. это системные вызовы. Для справки, std::system внутри реализуется через fork, exec и wait

annulen ★★★★★
()
Ответ на: комментарий от Rot1

По твоему порт С библиотек на С++ заключается в обертке их классами?

А что ещё нужно?

и имелось ввиду, что unistd - не часть языка С

А реализация процессов и не может быть частью такого языка, как си. Ведь она полностью зависит от ОС. Какие процессы могут быть в DOS? А стандартный си/си++ и для доса компилирует. Да, есть интерпретаторы, где такие вещи являются частью языка. Но на этих языках и не напишешь ничего для какой-нибудь сверх-худой встроенной системы. А на си - напишешь. Хотя в компиляторах си для некоторых встроенных систем даже стандартные библиотеки урезают.

aureliano15 ★★
()

QProcess.

Сама библиотека (.so-шка) QtCore5 весит около 4.9 Мб.

anonymous00 ★★
()

Весь зоопарк потоков и нитей в линуксе сводится к системному вызову clone. Ты хочешь красивую обертку над ним? Ну так напиши.

anonymous
()
Ответ на: комментарий от annulen

Альтернатив exec* и fork нет, т.к. это системные вызовы. Для справки, std::system внутри реализуется через fork, exec и wait

К тому же, это не сделать левой пяткой, из-за особенностей этих сисколов, обёртывать их ещё сильно уметь надо...

vodz ★★★★★
()
Ответ на: комментарий от anonymous

ТС переживал, что fork не является частью стандарта си/си++, а только posix. В этом смысле вообще нестандартная clone, использующаяся только в linux, для него, имхо, подойдёт ещё меньше.

aureliano15 ★★
()

Извиняюсь, но формулировка вопроса очччень странная. Было бы хорошо если бы ты его переформулировал общепринятыми словами.

cvv ★★★★★
()

Существуют ли решения в стандартной библиотеке С/С++ для создания нового процесса с заменой и без замены среды выполнения под Linux?

Вообще - да, в ANSI C была попытка это стандартизировать, но чет не получается найти. На этом форуме этот вопрос уже задавали.

cvv ★★★★★
()
Ответ на: комментарий от asaw

От этого он менее жирным не стал. Не, если буст уже используется в проекте, то окей. Я всё понимаю, но тащить его только ради некроссплатформенного синтаксического сахара для работы с процессами? seriously?

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

но тащить его только ради некроссплатформенного синтаксического сахара для работы с процессами? seriously?

Что за глупость? Какой ещё некросслатформенный сахар, когда это унифицированный кроссплатформенный интерфейс?

asaw ★★★★★
()
Ответ на: комментарий от asaw

Какой ещё некросслатформенный сахар, когда это унифицированный кроссплатформенный интерфейс?

Ты не понял. В бусте - да, никто не спорит. Но ТСу кросплатформа не нужна. И интерфейс нужен только чтобы не заморачиваться с чистым C каждый раз. В этом случае проще самому написать чем буст по зависимостям тянуть, там кода будет тьфу. Теперь понятно, что я имел ввиду?

Pinkbyte ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.