2010-07-08 7 views
4

누군가가이 일을 함께 NSTask 및 NSPipe을 사용하는 방법에 대한 간단한 예를 보여줄 수 명령 줄 목적-C와 comunicate 수하는NSTask 및 NSPipe 예

xcode와 objective c를 사용하여 멋진 GUI를 만들고 싶습니다. 찰리의 응답과 사용자 입력을 위해 2 개의 NSTextField를 갖고 싶습니다. 그런 다음 사용자 입력을 명령 줄에 보내고 찰리의 응답을 받고 NSTextField에 게시 버튼을 보냅니다.

나는 GUI 물건 (NSTextField 등)을 처리 할 수 ​​있습니다.하지만 objective-c 코딩 부분에 대한 도움이 필요합니다.

감사합니다.

엘리야

답변

4

애플은 http://developer.apple.com/mac/library/samplecode/Moriarity/

TaskWrapper.m 모든 영리한 물건을 포함 ... 그 대부분의 작업을 수행하는 방법을 보여줍니다 멋진 예제 코드를 가지고 있지만, 당신은 할 수 있도록하려는 때문에 작업에 데이터를 전송하기 위해, 당신과 같이, 그것을 조금 확장해야합니다 :

[task setStandardInput: [NSPipe pipe]];

이 타에 입력을 보내려면 SK, 당신은 할 수 있습니다 :

[[[task standardInput] fileHandleForWriting] writeData: ...];

데이터로 NSTextField있는 값을 설정하려면, 당신은 같은 것을 수행 할 수 있습니다

NSData *data = [[inputTextField stringValue] dataUsingEncoding:NSUTF8StringEncoding];

을 ... 그리고 현재 작업 디렉토리를 설정 귀하의 하위 작업에 대한 사용 [NSTask setCurrentDirectoryPath:]

예 :

[task setCurrentDirectoryPath:@"/blah/blah"]; 
[task setLaunchPath:@"/blah/blah/server.sh"]; 

.... (other setup code) 

[task launch]; 
+0

한 가지 더 ... 나는 "CD/ㅋ/ㅋ"다음 "./server.sh"를 보내 얼마나 찰리를 시작? – objectiveccoder001

+0

내 대답이 업데이트 된 방법을 보여주기 위해 업데이트되었습니다. 도움이 되었으면 좋겠어요 .- –

+0

또한, 뭔가를 보낸 후 터미널에서 데이터를 얻는 방법은 무엇입니까? 나는 그것을 어떻게 행하는 것과 혼돈 스럽다. – objectiveccoder001