문제

나는 객관적인 C Newbe이며 가능한 가장 쉬운 방법으로 쉘 스크립트를 실행하는 방법이 궁금합니다. 나는 출력에 대해 신경 쓰지 않습니다. System (), exec () 및 execl () 및 nstask를 시도했습니다. 이러한 방법은 어떤 이유로 든 작동하지 않습니다 ... 이것은 내가 실행하려는 쉘 스크립트입니다.

"mount_webdav http://idisk.mac.com/idisk_username/ /Volumes/idisk_username"

(기본적으로 내 Idisk를 장착). 또한 암호 상자 나 IT 작업 쇼의 표시가 없습니다. 사과 스크립트에서 작동하며 마운트 포인트 디렉토리를 만들었습니다. 위의 방법 중 어느 것도 전혀 아무것도하지 않거나 이상한 이유로 응용 프로그램을 충돌시킵니다.

도움이 되었습니까?

해결책

Nstask는 필요한 모든 것을 공급합니다. 이것은 작동해야합니다 :

NSArray *args=[NSArray arrayWithObjects:@"http://idisk.mac.com/idisk_username/",@"/Volumes/idisk_username",nil];
NSTask *mountTask=[[NSTask alloc] init];
[mountTask setLaunchPath:@"/sbin/mount_webdav"];
[mountTask launch];

먼저 명령 줄에서 모든 명령 경로와 Args를 테스트하십시오. 나는 mount_webdav를 사용하지 않았지만 당신이 제공 한 것보다 더 많은 args가 필요하다고 생각합니다.

다른 팁

도움을 줄 때 쉘 스크립트를 사용하지 마십시오. 스크립트를 매개 변수화 할 때 심각한 버그를 도입하는 좋은 방법입니다 (예 : mount_webdav %@ %@).

대신 Nstask를 사용하고 fork/exec 직접 또는 (파이썬에서) 하위 프로세스 모듈. 세 가지 인수를 단일 문자열이 아닌 배열로 전달합니다.

NSTask 코코아에서 이것을하는 방법 일 것입니다. 코드를 다시 살펴보고 문서를 읽고 (샘플 코드를보십시오) 문제가 발생하면 여기에 사용에 대한 구체적인 질문을 게시 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top