2009-06-24 3 views
4

В принципе, мне интересно, можно ли запустить консольный скрипт (.sh) из приложения iPhone. Сценарий написан для загрузки программы из репозитория, который я настроил, перезаписал, а затем по истечении установленного времени удалит программу и снова заново запишут, так что ей нужны привилегии root, и она интерактивна, поскольку пользователь может установить, сколько времени программа будет быть сохранен. У меня скрипт bash написан, и он отлично работает при вызове с мобильного терминала, но есть ли способ сделать это из приложения (jailbroken) (без использования мобильного терминала/SSH/Bossprefs)? Или есть лучший лучший способ достичь этого? ThanksЗапуск скрипта BASH из приложения iPhone?

ответ

3

Jasarien прямо здесь, он очень насторожен, и, как мы все знаем, все приложения изолированы песочницей. Но это не невозможно, так как Objective-C только построить на C вы можете использовать

system("ls"); 

выполнить основную ls команду, и она работает, если вы смотрите в вашем выводе GDB. Altho вы также можете использовать popen, чтобы заставить потоки в приложении работать с данными.

+0

Спасибо всем ... Думаю, я попытаюсь использовать команды system() и/или popen() для этого. Из того, что я читал, как правило, это делается из цели C – 2009-06-29 13:35:39

+0

Согласно XCode 6.3.2, 'system' устарел с iOS 8.0, и вместо этого мы должны использовать' posix_spawn'. –

1

Поскольку вы работаете с Jailbroken телефоном, вы практически неограниченны. Независимо от того, есть ли что-либо в API-интерфейсах iPhone, которое позволяет выполнять скрипт, другое дело. Кроме того, все, что вы используете, будет неподдерживаться и, скорее всего, изменится, перестанет работать или будет удалено в обновлении программного обеспечения.

Кроме того, вы, вероятно, уже знаете это или не заботитесь, но вы не пройдете процесс рассмотрения Apple для App Store, если вы начнете запускать скрипты BASH. Интерпретированный код запрещен.

1

Я бы посмотрел, как это сделать на OSX, скорее всего, это будет так, как это делается на iPhone, но вы, вероятно, не найдете какой-либо конкретной документации по iPhone, потому что это запрещено на "нормальном" iphone (тот, который не был взломан)

+0

Bill сказал это довольно хорошо. Это как раз неограниченный доступ к ОС, который Apple пытается предотвратить, используя приложения для песочницы в iPhone OS. Должно быть возможно на джейлбрейк, хотя - не понимаю, почему нет. –

-1

Actualy

система ('Ls /'); дает лучший результат как система ('ls');

0

что-то, что вы можете рассмотреть, использует NSTask, если вы хотите получить выходные данные и сообщения об ошибках из оболочки.