Я только что попробовал скомпилировать код, который я написал некоторое время назад, с использованием Gnu g ++ в режиме C ++ 11, чтобы посмотреть, потребуется ли в ближайшее время переделка кода (я также планирую протестировать его в режиме C ++ 17 по той же причине).
Я обнаружил, что функция kill () вызвала ошибку компилятора, и похоже, что функция kill больше не существует в заголовке signal.h.
Я только что посмотрел на http://www.cplusplus.com/reference/csignal/ в качестве ссылки, которая, кажется, подтверждает, что это не просто упущение, специфичное для GNU, но, кажется, в стандарте.
Я нигде не могу найти обоснования для этого упущения и не могу найти ни одного предложения о том, как мне управлять процессами без него. Может кто-то указать мне верное направление?
C ++ стандартная функция raise
.
kill
функция POSIX, для которой требуется идентификатор процесса POSIX pid_t
ни один из которых не требуется в стандарте C ++.
Хорошо, я был слишком быстр, чтобы ответить на этот вопрос, конечно, fork / kill и т. Д. В первую очередь не являются частью стандарта C ++, но являются обычным дополнением на Unix-подобных платформах.
Моя настоящая проблема заключалась в том, что я использовал неправильный переключатель компилятора. Для всех, кто сталкивается с этой проблемой, чтобы получить строгий стандарт C ++ 11, используйте:
g++ -std=c++11
Но чтобы получить стандарт C ++ 11 плюс нестандартные расширения, используйте:
g++ -std=gnu++11
Используя последнее, я могу собрать и вызвать fork / kill без проблем.