В C ++ 11 заголовок signal.h не имеет функции kill - PullRequest
0 голосов
/ 12 июня 2018

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

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

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

g++ -std=c++11

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

g++ -std=gnu++11

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

0 голосов
/ 12 июня 2018

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

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

...