NSTask

กรกฎาคม 3, 2008 at 7:23 am ใส่ความเห็น

ช่วงนี้ Cocoa มีแต่เรื่องง่ายๆแฮะ 

อธิบายแบบสั้นๆก็คือ NSTask เป็น Class ที่เอาไว้เรียกใช้คำสั่งต่างๆ ที่เป็น Binary อยู่แล้ว เช่นคำสั่งต่างๆ ที่เราเรียกใช้ใน Terminal ที่เป็น Command line นั่นแหละ

Input ของ NSTask มี 2 ส่วน คือ
1. ส่วนของ “คำสั่ง” ที่เราจะเรียกใช้ ต้องใส่เป็น Path เต็มของคำสั่งนั้น ว่ามันเก็บไว้ที่ไหน (ดูได้จากคำสั่ง which) และใส่เป็น String
2. ส่วนของ “Argument” ของคำสั่ง มี Argument อะไรบ้างก็รวมไว้เป็น Array

โค้ดตัวอย่าง ถ้าเราต้องการเรียกใช้คำสั่ง ls -l เพื่อดูว่ามีไฟล์อะไรอยู่ใน Folder เราบ้าง จะได้ดังนี้

NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@”bin/ls”];
[task setArguments:[NSArray arrayWithObject:@”-l”]];
[task launch];

เท่านี้ ในหน้าจอ ก็จะแสดงผลเป็นไฟล์ทั้งหมดใน Folder ออกมา (ในหน้าจอ Debugger Console นะครับ) แล้วถ้าเราต้องการเอา Output ที่ได้มาต้องทำยังไง

ก่อนจะใช้คำสั่ง Launch ก็ตั้งเอาไว้ก่อนครับ ว่าให้มันเก็บ Output ไว้ตรงไหนด้วย

NSPipe *pipe = [NSPipe pipe];
[task setStandardOutput:pipe];

หลังจาก เรียกใช้คำสั่ง Launch แล้ว เราก็มาทำการดึง Output ที่ได้มาจาก NSPipe นั่นเอง

NSFileHandle *fileHandle = [[NSFileHandle alloc] init];
[pipe fileHandleForReading];
NSData *data = [[NSData alloc] initWithData:[fileHandle readDataToEndOfFile]];

เราก็จะได้ Output มาเก็บอยู่ในรูปแล้วถ้าอยากได้เป็น NSString ก็แปลงเอา จาก NSData เป็น NSString ซึ่งเคยเขียนเอาไว้แล้วนะครับ 

 

Entry filed under: Cocoa Programming, Computer. Tags: , .

มันอยู่ที่จอภาพ!!! ไปทัวร์(หลง?)ที่วังท่าพระกันเถอะ

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  เปลี่ยนแปลง )

Google photo

You are commenting using your Google account. Log Out /  เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out /  เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out /  เปลี่ยนแปลง )

Connecting to %s

Trackback this post  |  Subscribe to the comments via RSS Feed


del.icio.us For iPhone dev

Post Calendar

กรกฎาคม 2008
พฤ อา
« มิ.ย.   ส.ค. »
 123456
78910111213
14151617181920
21222324252627
28293031  

%d bloggers like this: