Qual é a diferença entre SIGSTOP e SIGTSTP?


Respostas:


153

Ambos os sinais são projetados para suspender um processo que será eventualmente retomado SIGCONT. As principais diferenças entre eles são:

  • SIGSTOPé um sinal enviado por meio de programação (por exemplo: kill -STOP pid) enquanto SIGTSTP(por sig nal - t erminal paragem ) pode também ser enviado através do ttycontrolador por um usuário digitando no teclado, geralmente Control- Z.

  • SIGSTOPnão pode ser ignorado. SIGTSTPpode ser.


10
Factoid: Se você é um programador de Linux, SIGTSTP é o que você obtém quando usa Ctrl-Z para interromper um processo em execução em um shell sem matá-lo. Isso geralmente faz com que o shell o coloque em uma lista de trabalhos suspensos.
simpleuser

@Archer Não tenho certeza de entender seu comentário. Quer dizer que você acredita Control-Zque não é acionado SIGTSTPou acha que não deveria?
jlliagre

@jlliagre Fiz uma pesquisa mais detalhada e descobri que você está certo. Excluí o comentário anterior.
Archer

@Archer Ok, acho que você ficou confuso com a terminologia da página do manual. terminal stopsignifica TSTP.
jlliagre

@jlliagre Eu quero, mas o sistema não permite, ele diz que eu só posso cancelar o downvote se a resposta for editada ...
Archer

39

/usr/include/x86_64-linux-gnu/bits/signum.h

#define SIGSTOP     19  /* Stop, unblockable (POSIX).  */
#define SIGTSTP     20  /* Keyboard stop (POSIX).  */

6
No Solaris 10, os sinais são definidos no arquivo de cabeçalho/usr/include/sys/iso/signal_iso.h
Kent Pawar

2
No FreeBSD 11 está em/usr/include/sys/signal.h
Greg Schmit

1

SIGSTOP não pode ser ignorado pelo processo direcionado.

Um bom exemplo disso é o reprodutor de vídeo mpv, ele pode ignorar, SIGTSTPmas não pode SIGSTOP.

Você pode testar com um vídeo em execução:

kill -SIGTSTP $(pidof mpv) e kill -SIGSTOP $(pidof mpv)

Claro, kill -SIGCONT $(pidof mpv)para retomar o jogo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.