Casa > C > Como O Linux Reconhece Qual Arquivo Executável Rodar Primeiro Se Há Mais De Um?

Como o Linux reconhece qual arquivo executável rodar primeiro se há mais de um?

Veja a documentação das chamadas de sistema execlp(2), execvp(2) e execvpe(2).

Briefly:

>ul> se o argumento especificando o caminho do executável contém uma barra ("/"), basta olhar se existe o executável nomeado nesse caminho absoluto/relativo e usar isso, caso contrário falhar;otherwise (se o argumento não contém barra) scanear cada diretório listado na variável de ambiente PATH até que um arquivo executável nomeado como o especificado seja encontrado.

Por exemplo:

  1. o caminho absoluto /bin/ls (absoluto porque começa com uma barra) indica o arquivo executável ls listado no diretório /bin, e não há nenhuma ambiguidade possível aqui (já que um diretório não pode listar nomes de arquivos duplicados);
  2. o caminho relativo foo/ls indica o arquivo executável ls no subdiretório foo do diretório atual. Ou está lá ou não está;
  3. o nome do comando ls é procurado em cada diretório listado na variável de ambiente PATH (diretórios são separados por ponto-e-vírgula), até que um seja encontrado. Note que o diretório atual não é procurado a menos que esteja explicitamente listado no PATH (como um ponto: ".").
    >br>br>Um valor típico para PATH poderia ser /sbin;/usr/sbin;/bin;/usr/bin;/usr/local/bin

Nota que o MS-DOS funcionou praticamente da mesma maneira, com a importante exceção de que no caso 3, o diretório atual é procurado primeiro, e depois todos os diretórios listados na variável de ambiente PATH.

De Cinda Delaroca

Até que distância pode funcionar a comunicação de campo (NFC)? :: O que está realmente impedindo o Linux de abrir arquivos .exe?