Я пытаюсь реализовать EINVAL, EPERM, ESRCH в моей программе.
ОШИБКИ
EINVAL Указан неверный сигнал.
EPERM У процесса нет разрешения на отправкусигнал для любого из целевых процессов.ESRCH PID или группа процессов не существует.
Вот мой исходный код:
#include <stdio.h>
#include <sys/types.h>
#include <signal.h>
#include <unistd.h>
int main(void)
{
int errno, pid;
puts("Enter a process id : ");
scanf("%d", &pid);
errno = kill(pid, 1);
if(errno == -1)
{
printf("Cannot find or kill the specified process\n");
}
switch(errno)
{
case EINVAL:
printf("An invalid signal was specified.\n");
break;
case EPERM:
printf("The process does not have permission to send the signal to any of the target processes.\n");
break;
case ESRCH:
printf("The pid or process group does not exist.");
break;
}
}
И когда я компилирую программу, я получаю следующие ошибки.
unipro @ ubuguest: / SoftDev / ADSD / Модуль 1 / Модуль 1 / Практика / C / C_adv / unix $ cc killApp.c -o killApp
killApp.c: в функции 'main':
killApp.c: 29: ошибка: необъявленное «EINVAL» (первое использование в этой функции)
killApp.c: 29: ошибка: (Каждый необъявленный идентификатор сообщается только один раз
killApp.c: 29: ошибка: длякаждая функция, в которой она появляется.)
killApp.c: 33: ошибка: «EPERM» необъявлена (первое использование в этой функции)
killApp.c: 37: ошибка: «ESRCH» необъявлена (первое использование в этой функции)
unipro @ ubuguest: / SoftDev / ADSD / Модуль 1 / Модуль 1 / Pratice / C / C_adv / unix $
Итак, где определены EINVAL, EPERM, ESRCH?Нужно ли определять какой-либо дополнительный заголовочный файл?Или я неправильно ее реализую?
Обновлен код [рабочий код]:
#include <stdio.h>
#include <sys/types.h>
#include <signal.h>
#include <unistd.h>
#include <errno.h>
int main(void)
{
int status, pid;
puts("Enter a process id : ");
scanf("%d", &pid);
status = kill(pid, 1);
switch(errno)
{
case EINVAL:
printf("An invalid signal was specified.\n");
break;
case EPERM:
printf("The process does not have permission to send the signal to any of the target processes.\n");
break;
case ESRCH:
printf("The pid or process group does not exist.");
break;
}
}
Спасибо.