main 함수 본문에서 system (RELATIVE_PATH +/MyShellScript.sh)을 호출해야합니다. 스크립트 및 기타 관련 자료는 기본 프로젝트 번들에 있습니다. 상대 경로를 얻는 방법? 그것이 가능해야 이럴 주요 매개 변수에서 압축을 풉니 다 - "문자의 *의 변수는 argv []"...코코아 프로그램이 실행되는 경로를 얻는 방법?
답변
int main (int argc, const char * argv[])
{
NSLog(@"%s", argv[0]);
return 0;
}
출력
2012-01-24 21:33:22.015 CLIXMPLParser[13042:707] /Users/zrxq/Library/Developer/Xcode/DerivedData/CLIXMPLParser-dsibnvwgoqvjnvbhlxkyzcojqnwr/Build/Products/Debug/CLIXMPLParser
정확히 당신이 뭘 하려는지
? 쉘 스크립트는 무엇을하고 있으며, 왜 main()
에서 호출하고 있습니까? 일반적으로 코코아 응용 프로그램에서 main()
함수를 수정하지 않아야합니다.
일반적으로 절대적으로 필요하지 않으면 쉘 스크립트를 사용하지 말아야하지만, 그렇다면 반드시 NSTask
개체를 만들어 스크립트를 실행해야합니다. 시작할 때 스크립트를 실행하려면 응용 프로그램 위임자의 applicationDidFinishLaunching:
메서드에서 스크립트를 시작하는 코드를 배치해야합니다.
당신은 NSBundle
의 다양한 방법을 사용하여 앱의 번들 내부 자원에 대한 경로를 얻을 수 있습니다 :
NSString* path = [[NSBundle mainBundle] pathForResource:@"MyShellScript" ofType:@"sh"];
당신은 Oracle JDeveloper 도구 (내부 폴더와 java 파일을 포함하고있는 폴더)를 다운로드했지만 도구는 일부 2 차 레벨 폴더의 일부 셸 스크립트를 통해 실행됩니다. 그래서, 나는 그 jdeveloper 주위에 "wrapper"를 만드는 방법에 관심이 있었고 편의상 .app 패키지를 만들고 싶었다. 현재 스크립트와 jdeveloper를 미리 정의 된 위치에서 실행할 수 있으므로 system() 호출에 상대 경로를 전달하는 방법을 알아야합니다. – Centurion
- 1. 런타임에서 응용 프로그램의 경로를 얻는 것 + 코코아
- 2. 충돌없이 코코아 프로그램이 종료됩니다.
- 3. 코코아 : 툴바의 태그를 얻는 방법
- 4. DataGridBoundColumn의 바인딩 경로를 얻는 방법
- 5. Jar 파일 경로를 얻는 방법
- 6. 열린 파일 경로를 얻는 방법
- 7. Ruby에서 데스크탑 경로를 얻는 방법
- 8. 레일 경로에서 경로를 얻는 방법
- 9. 응용 프로그램이 실행되는 동안 파일을 삭제하는 방법
- 10. 실행중인 서블릿의 정확한 경로를 얻는 방법?
- 11. 설치된 패키지의 lib 폴더 경로를 얻는 방법
- 12. 코코아 - 맞춤 경로를 따라보기 애니메이션화
- 13. 방법 사용자 설정 경로를 얻는 방법 Qt4.4
- 14. 다른 .NET 버전의 machine.config 경로를 얻는 가장 좋은 방법
- 15. Wordpress에서 실행되는 사용자 정의 쿼리를 얻는 방법?
- 16. 코코아 질문 : 가장 많이 사용되는 응용 프로그램에 대해 현재 열려있는 문서의 파일 경로를 얻는 방법
- 17. 안드로이드 설치된 응용 프로그램의 경로를 얻는 방법
- 18. QIcon에 대한 파일/리소스 경로를 얻는 방법
- 19. 항아리 내에서 리소스 경로를 얻는 방법
- 20. 파이썬에서 선택한 목록 항목의 경로를 얻는 방법
- 21. 가상 디렉터리 실제 경로를 얻는 방법
- 22. elisp에서 백 슬래시로 windows 경로를 얻는 방법
- 23. % CD %의 상위 경로를 얻는 방법
- 24. SVN에서 특정 파일의 경로를 얻는 방법
- 25. 파이썬에서 현재 가져 오기 경로를 얻는 방법?
- 26. Rebol에서 부모 개체 경로를 얻는 방법?
- 27. JSF에서 업로드 된 파일 경로를 얻는 방법
- 28. 서버에서 삭제할 파일의 경로를 얻는 방법
- 29. Windows에서 올바른 시스템 경로를 얻는 방법
- 30. 명명 된 파이프의 전체 경로를 얻는 방법
'동안 변수는 argv [0]'* * 내가 거기에 믿지 않는 응용 프로그램의 경로를 포함 할 수 있습니다 기본 API에서 경로와'argv [0]'는 별개의 매개 변수이며 다른 값을 가질 수 있습니다 (이 기능은 특정 프로그램에 의해 실제로 동작을 결정하는 데 사용됩니다 - argv [0]'for 다른 값). Cocoa에 대한 정답은 Rob Keniger의 대답에서와 같이 NSBundle을 사용하는 것입니다. – CRD
@CRD가 옳다. 'argv [0]'에는 실행 파일이 호출 된 이름이 포함되어 있습니다.이 이름은 반드시 전체 경로와 동일하지는 않습니다. –