Por que alguns programas retornam ao ser chamado do terminal, enquanto outros apenas retornam apenas com a inclusão de um '&' -- and-line camp askubuntu Relacionado O problema

Why do some programs return when being called from the terminal while others just return only with the inclusion of an '&'


5
vote

problema

português

Programas como o Skype e o Tixati podem ser chamados do terminal sem adicionar um & no final da sua chamada. Por que esse não é o caso do Firefox? Estou curioso sobre quais programas eu preciso adicionar o & opção para.

english

Programs like Skype and Tixati can just be called from the terminal without adding an & at the end of their call. Why is this not the case with Firefox. I am just curious as to what programs I need to add the & option to.

  
   
   

Lista de respostas

13
 
vote
vote
Melhor resposta
 

Isso depende inteiramente de como o software foi escrito, muitas vezes também dependendo da intenção com ela.

A maioria dos utilitários de bash (= shell, terminal) destinam-se a ser usado "síncronamente", com estas a execução destina-se a produzir um resultado; que pode ser necessário para os seguintes comandos em um script ou procedimento manual - se o utilitário (programa, software) se separar e deixar você no prompt imediatamente, você não saberá quando ou se o resultado estiver disponível.

Skype não é normalmente usado como uma linha de comando "utilitário", mas sim uma ferramenta para lidar com a comunicação (telefone ou qualquer outra coisa). E então é bastante útil se não bloquear o terminal, se lançado a partir daí.

destacando do terminal:
https://superuser.com/questions/178587/ Do-I-Detach-A-Process-from-terminal - totalmente

 

This depends entirely on how the software was written, often also depending on the intent with it.

Most bash (= shell, terminal) utilities are meant to be used "synchronously", with these the execution is meant to produce a result; which might be required for the following commands in a script or manual procedure - if the utility (program, software) detaches and leaves you at the prompt immediately you will not know when or if the result is available.

Skype is not normally used as a command line "utility" but rather a tool to handle communication (phone or whatever). And then it is quite handy if it does not block the terminal, if launched from there.

Detaching from the terminal:
https://superuser.com/questions/178587/how-do-i-detach-a-process-from-terminal-entirely

 
 
9
 
vote

Todos os programas podem ser chamados sem & . O & é completamente opcional. Tudo o que faz é enviar o processo para o fundo para que você possa continuar usando seu terminal.

Sem ele, se você iniciar um processo do terminal, precisará esperar até que esse processo termine (ou seja fechado) antes de poder continuar usando seu terminal. Portanto, geralmente é executado programas como command & para enviá-los para o fundo e continuar trabalhando no mesmo terminal.

Para mais sobre os vários operadores de shell como & e o que eles fazem, veja aqui .

 

All programs can be called without &. The & is completely optional. All it does is send the process to the background so you can continue using your terminal.

Without it, if you launch a process from the terminal, you will need to wait until that process finishes (or is closed) before being able to continue using your terminal. Therefore, one often runs programs as command & to send them to the background and keep working in the same terminal.

For more on the various shell operators like & and what they do, see here.

 
 
     
     
3
 
vote

É muito simples para um programa se colocar em segundo plano. O código usado para fazer isso pode ser tão simples quanto isso:

  if (fork() > 0) _exit(0);    

Mas, por isso, por padrão, introduziria algumas desvantagens. Por exemplo, você não poderia mais envolver o programa em um script que faz algo sobre o programa terminando. E escrevendo a saída para o terminal de um processo de fundo pode acabar olhando bastante bagunçado, a saída do terminal de processos de fundo pode ser desativada, mas o processo de fundo será congelado assim que tenta produzir saída.

Na minha experiência, o Skype e o Firefox não se colocam em segundo plano. Eles fazem algo diferente embora.

Quando você inicia um desses programas, eles verificarão se já existe uma instância em execução do programa. Se houver uma instância em execução, a nova instância enviará uma mensagem para a instância em execução com o parâmetro que você acabou de dar e sair.

O efeito disso é que a instância já em execução faz algo, e você recebe seu prompt de volta.

 

It is very simple for a program to put itself in the background. The code used to do so could be as simple as this:

if (fork() > 0) _exit(0); 

But doing so by default would introduce a few disadvantages. For example you could no longer wrap the program in a script which does something upon the program terminating. And writing output to the terminal from a background process could end up looking quite messy, terminal output from background processes can be disabled but then the background process will be frozen once it tries to produce output.

In my experience Skype and Firefox do not put themselves in the background. They do something different though.

When you start one of these programs they will check if there is already a running instance of the program. If there is a running instance the new instance will send a message to the running instance with the parameter you just gave it, and then quit.

The effect of that is that the already running instance does something, and you get your prompt back.

 
 
 
 

Perguntas relacionadas

411  Como mostrar o progresso da transferência e velocidade ao copiar arquivos com CP?  ( How to show the transfer progress and speed when copying files with cp ) 
Caso contrário, existe algum utilitário alternativo de linha de comando que possa conseguir isso? ...

9  Mesclar vários arquivos MP4 em um único vídeo através do terminal [duplicado]  ( Merge multiple mp4 files into a single video via the terminal ) 
. Esta pergunta já tem respostas aqui : O que o software pode participar de vídeos? ...

0  Qualquer maneira de terminal remoto, um padrão de desktop Offline do Ubuntu padrão instalado?  ( Any way to remote terminal a standard installed offline ubuntu desktop pc ) 
Como posso conectar-se a um remoto (VNC) Ubuntu Desktop 16.04 com a configuração padrão, mas sem acesso à Internet (isto é, outra maneira de instalar software...

5  Equivalente à história do yum?  ( Equivalent to yum history ) 
Existe um equivalente a yum history comando no Ubuntu? Estou ciente de que posso apenas olhar para os logs apt, mas estou procurando por algo que irá listá-...

1  Como posso acessar a rede do terminal? [fechado]  ( How can i access network from terminal ) 
. Esta questão é improvável que ajude a futuros visitantes; Só é relevante para uma pequena área geográfica, um momento esp...

0  Como ler a senha da variável?  ( How to read the password from variable ) 
Eu estou tentando mover meu arquivo para outro sistema que está localizado em algum outro lugar, com este comando: rsync -avrz src destination funcion...

5  Wget tem um atraso de 4 segundos  ( Wget has a 4 second delay ) 
Eu tentei wget uma página com o Windows / Mac, e a resposta é instantânea Enquanto o aplicativo Linux atrasa por 4 segundos antes de mostrar a resposta. O...

29  Exibir as primeiras linhas de um arquivo  ( Display the first few lines of a file ) 
Eu tenho uma pasta com alguns arquivos nele. Eu quero exibir o seguinte: filename_1 first line of file1 second line of file1 third line of file1 filename_2...

3  Directory Desktop não abrindo  ( Desktop directory not opening ) 
Eu sou completamente novo para o Ubuntu ou qualquer distribuição do Linux completamente. Ao usar o terminal, quando estou no diretório / home / username o c...

5  Como executar um programa sem digitar o caminho completo? [duplicado]  ( How to run a program without typing the full path ) 
. Esta pergunta já tem respostas aqui : como executar scripts sem digitar o caminho completo? ...




© 2022 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.