É bastante comum, alguns programas baseiam seu trabalho exclusivamente nisso.
Alguns dos exemplos mais comuns que vêm à mente são su
, sudo
e xterm
.
su -c 'ls -l /root'
sudo ls -l root
xterm -e 'top -d 10'
É diferente do seu exemplo
echo 'echo hello'
onde as aspas inversas são interpretadas pelo shell, e o programa não executa nada em si.
Observe também a diferença entre su
e sudo
. O primeiro pega uma string, e pode ser difícil configurar tal string do ponto de vista do usuário, por exemplo, para expandir uma variável antes é vista pelo comando; o segundo é uma série de strings e é muito mais simples (não há citações no exemplo sudo
).
O que eles usam para implementar seu trabalho interno? Existem basicamente duas maneiras: a rotina de biblioteca system
e a chamada de sistema exec
. O primeiro chama um shell e permite várias expansões de shell, como
su -c 'ls -ld /root/.*'
enquanto o segundo método não permite essa liberdade.