
Eu tenho dois telefones Android, um com root e outro não. Quando executo o código a seguir sem pedir permissão de root nos dois telefones,
system("echo \"abc\" > /data/a.txt\n");
o telefone enraizado me retorna erro-2 (512); o telefone normal retorna o erro-1 (256, permissão negada). Então minha pergunta é: o que faz essa diferença.
Responder1
Pelo menos no meu sistema desktop Linux, errno 2 é ENOENT
, ou seja, não existe tal arquivo ou diretório. Você pode descobrir com o errno
comando (embora provavelmente não o tenha no telefone).
Isso pode significar que você não tem /data nesse telefone (o que seria estranho). Meu telefone enraizado (Galaxy Nexus, executando o Jelly Jean 4.2.2) dá permissão negada quando tento fazer isso em um shell (não em um programa C, como você parece estar fazendo)
Sugiro ls -ld /data
começar, e talvez também which echo
ver se algo está diferente aí. Ou possivelmente você não tem uma concha; funciona system("true")
?