У меня есть код C, который использует fork()
+exec()
, wait()
(или waitpid()
) и kill()
и предполагает, что они существуют после включения соответствующих заголовков POSIX.
Теперь я хочу сделать этот код как можно более многоплатформенным — с минимальными изменениями. Таким образом, никаких зависимостей от сторонних библиотек и реализации этих средств в системах, в которых их нет. Однако для меня важно выйти за рамки только Linux, Windows и Mac OS. Мой инструмент для этого — CMake, который используется в проекте с этим кодом; и препроцессор Си. Может быть, немного клеевого кода на самом C.
Мой вопрос: что я должен проверить, что я должен поместить в сгенерированный включаемый файл и как мне изменить мой код, вызывающий эти функции, чтобы добиться одинакового поведения как на POSIX, так и на различных платформах, отличных от POSIX?
PS. Я понимаю, что на многих платформах нет сигналов в стиле Unix. Предположим для обсуждения, что я только завершаю процессы, а не посылаю другие сигналы.
#ifdef HAVE_FORK
решения. - person Jonathon Reinhart   schedule 11.02.2019fork()
, то выход за пределы Linux, Windows и Mac немного продвинется вперед, так как вам сначала придется обойти тот факт, что в Windows нетfork()
. - person John Bollinger   schedule 11.02.2019#ifdef
и/или в поведении системы сборки. - person Jonathon Reinhart   schedule 11.02.2019