A função de biblioteca system() C usa sh para executar o comando fornecido. Ao fazer isso, ele faz uma pesquisa pelo executável nos diretórios em $PATH , a menos que o programa já esteja especificado com um caminho absoluto. A função de biblioteca execl() C não faz essa pesquisa.
Você deseja usar a família de funções exec para executar seu programa e, em seguida, usar execlp() , que faz uma pesquisa PATH .
Veja man execlp no seu sistema.