2017-01-08 4 views
-1

Я ищу способ передать Аргументы как String для функции kill в C (man 2 kill), потому что Сигнал зависит от ОС. Таким образом, пользователь вводит то, что должна отправить программа (для примера SIGUSR1, ..), и я хочу отправить его. Через kill (pid, USR_INPUT);Передача строки Аргументы для kill() в C

Моя ошибка

Invalid Argument 

Где использовать:

kill(pid,name); 

Большое спасибо

+0

Вы не можете. Функция 'kill' просто не поддерживает вызов такого типа. Вы читаете страницу руководства, чтобы вы уже знали об этом. Почему вы проигнорируете, что на странице человека указано, что должен быть второй параметр? – kaylum

+0

, так что я должен реализовать это для каждого os. Это кажется неправильным –

+0

@PeterNeuman Учитывая, что 'kill()' * сам * не является C, а POSIX, я не вижу, как вы можете ожидать, что это будет работать «на каждом os». – EOF

ответ

0

Это просто невозможно.

kill(2) не принимает строковый (второй) аргумент для сигнала. Звучит немного некорректно, что вам приходилось обрабатывать сигналы, вводимые в виде строк. Если вам действительно нужно это сделать, вы можете преобразовать свой ввод строки в целочисленную форму, сравнив ее со списком интересующих вас сигналов:

if (strcmp(sig_str, "SIGINT") == 0) { 
    sig_num = SIGINT; 
} else if (sig_str, "SIGTERM") == 0) { 
    sig_num = SIGTERM; 
} else if ... 

... 

kill(pid, sig_num); 
+0

нормально исправил ее, если я пишу int Сигнал = SIGUSR1, а не char * Сигнал = SIGUSR; –

Смежные вопросы