Invoking the signal command isn't the same as invoking the kill utility from the shell.
Sending a signal with kill causes GDB to decide what to do with the signal depending on the signal handling tables (see "Signals"). The signal command passes the signal directly to your program.
Alternatively, if signal is zero, continue execution without giving a signal. This is useful when your program stopped on account of a signal and would ordinary see the signal when resumed with the continue command; signal 0 causes it to resume without a signal.
The signal command doesn't repeat when you press Enter a second time after executing the command.