В C ++ 11 заголовок signal.h не имеет функции kill

Я только что попробовал скомпилировать код, который я написал некоторое время назад, с использованием Gnu g ++ в режиме C ++ 11, чтобы посмотреть, потребуется ли в ближайшее время переделка кода (я также планирую протестировать его в режиме C ++ 17 по той же причине).

Я обнаружил, что функция kill () вызвала ошибку компилятора, и похоже, что функция kill больше не существует в заголовке signal.h.

Я только что посмотрел на http://www.cplusplus.com/reference/csignal/ в качестве ссылки, которая, кажется, подтверждает, что это не просто упущение, специфичное для GNU, но, кажется, в стандарте.

Я нигде не могу найти обоснования для этого упущения и не могу найти ни одного предложения о том, как мне управлять процессами без него. Может кто-то указать мне верное направление?

-1

Решение

C ++ стандартная функция raise.

kill функция POSIX, для которой требуется идентификатор процесса POSIX pid_tни один из которых не требуется в стандарте C ++.

2

Другие решения

Хорошо, я был слишком быстр, чтобы ответить на этот вопрос, конечно, fork / kill и т. Д. В первую очередь не являются частью стандарта C ++, но являются обычным дополнением на Unix-подобных платформах.

Моя настоящая проблема заключалась в том, что я использовал неправильный переключатель компилятора. Для всех, кто сталкивается с этой проблемой, чтобы получить строгий стандарт C ++ 11, используйте:

g++ -std=c++11

Но чтобы получить стандарт C ++ 11 плюс нестандартные расширения, используйте:

g++ -std=gnu++11

Используя последнее, я могу собрать и вызвать fork / kill без проблем.

0

По вопросам рекламы [email protected]