Como interpretar este comando em cadeia?

1
[root@localhost /]# ( ./address_to_char;cat) | ./overflow

Como o ( ./address_to_char;cat) funciona aqui?

O que é diferente de ./address_to_char|./overflow ?

    
por kernel 17.04.2011 / 10:37

2 respostas

1

As saídas de ./address_to_char e cat são canalizadas para ./overflow como um único fluxo contínuo de dados.

  1. Primeiro, ./address_to_char é executado e sua saída é redirecionada para a entrada de ./overflow .

  2. Quando ./address_to_char sai, cat é iniciado e sua saída é anexada ao processo ./overflow ainda em execução da mesma maneira.

    Como cat foi executado sem nenhum arquivo especificado, ele lê stdin (neste caso, seu teclado).

por 17.04.2011 / 16:14
1

Bem, os parênteses abrem um sub shell e o ponto e vírgula executará os comandos sequencialmente.

Portanto, neste caso, você está executando ./address_to_char then cat em uma subshell.

    
por 17.04.2011 / 10:46

Tags