
Tengo dos teléfonos Android, uno rooteado y el otro no. Cuando ejecuto el siguiente código sin pedir permiso de root en los dos teléfonos,
system("echo \"abc\" > /data/a.txt\n");
el teléfono rooteado me devuelve el error-2 (512); el teléfono normal devuelve el error 1 (256, permiso denegado). Entonces mi pregunta es, ¿qué hace esta diferencia?
Respuesta1
Al menos en mi sistema Linux de escritorio, el error 2 es ENOENT
, es decir, no existe tal archivo o directorio. Puedes averiguarlo con el errno
comando (aunque probablemente no lo tengas en el teléfono).
Eso podría significar que no tienes /data en ese teléfono (lo cual sería extraño). Mi teléfono rooteado (Galaxy Nexus, que ejecuta Jelly Jean 4.2.2) da permiso denegado cuando lo intento en un shell (no en un programa C, como parece que estás haciendo)
Sugiero ls -ld /data
comenzar y tal vez también which echo
ver si hay algo diferente allí. O posiblemente no tengas un caparazón; ¿ system("true")
funciona?