diff --git a/Userland/killall.cpp b/Userland/killall.cpp index 1774b4e018..a7a3aa603e 100644 --- a/Userland/killall.cpp +++ b/Userland/killall.cpp @@ -26,6 +26,7 @@ #include #include +#include #include #include #include @@ -66,9 +67,19 @@ int main(int argc, char** argv) if (argv[1][0] != '-') print_usage_and_exit(); - auto number = String(&argv[1][1]).to_uint(); + Optional number; + + if (isalpha(argv[1][1])) { + int value = getsignalbyname(&argv[1][1]); + if (value >= 0 && value < NSIG) + number = value; + } + + if (!number.has_value()) + number = String(&argv[1][1]).to_uint(); + if (!number.has_value()) { - printf("'%s' is not a valid signal number\n", &argv[1][1]); + printf("'%s' is not a valid signal name or number\n", &argv[1][1]); return 2; } signum = number.value();