開発環境
- OS X Mavericks - Apple(OS)
- Xcode 6.0 Beta
- Swift (プログラミング言語)
初めてのPerl 第6版 (Randal L. Schwartz (著)、brian d foy (著)、Tom Phoenix (著)、近藤 嘉雪 (翻訳)、オライリージャパン)、16章(プロセス管理)の16.9(練習問題)2.をSwiftで考えてみる。
16.9(練習問題)2.
コード(Xcode)
main.swift
// // main.swift // sample2 // // Created by kamimura on 8/19/14. // Copyright (c) 2014 kamimura. All rights reserved. // import Foundation func error(msg:String) { let stderr = NSFileHandle.fileHandleWithStandardError() stderr.writeData((msg + "\n").dataUsingEncoding(NSUTF8StringEncoding)) exit(1) } let dir = String.fromCString(C_ARGV[1]) let stdout = NSFileHandle.fileHandleWithStandardOutput() let stderr = NSFileHandle.fileHandleWithStandardError() let out_fh = fopen("ls.out", "w") let err_fh = fopen("ls.err", "w") if !out_fh { error("ls.outファイルを開けません。") } if !err_fh { error("ls.errファイルを開けません。") } let out_descriptor:Int32 = fileno(out_fh) let err_descriptor:Int32 = fileno(err_fh) if dup2(out_descriptor, 1) == -1 { error("標準出力をリダイレクトできません。") } if dup2(err_descriptor, 2) == -1 { error("標準エラーをリダイレクトできません。") } var task = NSTask() task.launchPath = "/bin/ls" task.arguments = ["-l", dir!] task.launch()
入出力結果(Console Output)
$ ./sample2 / $ cat ls.out total 16437 drwxrwxr-x+ 61 root admin 2074 Aug 13 09:16 Applications drwxr-xr-x+ 66 root wheel 2244 May 13 19:51 Library drwxr-xr-x@ 2 root wheel 68 Aug 25 2013 Network drwxr-xr-x+ 4 root wheel 136 Apr 22 02:37 System drwxr-xr-x 6 root admin 204 Apr 26 05:24 Users drwxrwxrwt@ 6 root admin 204 Aug 19 18:32 Volumes drwxr-xr-x@ 39 root wheel 1326 Jul 1 08:51 bin drwxrwxr-t@ 2 root admin 68 Aug 25 2013 cores dr-xr-xr-x 3 root wheel 4447 Aug 11 03:25 dev lrwxr-xr-x@ 1 root wheel 11 Apr 22 02:18 etc -> private/etc dr-xr-xr-x 2 root wheel 1 Aug 11 03:25 home -rwxr-xr-x@ 1 root wheel 8394000 Jun 4 13:27 mach_kernel dr-xr-xr-x 2 root wheel 1 Aug 11 03:25 net drwxr-xr-x 5 root wheel 170 Jul 25 13:33 opt drwxr-xr-x@ 6 root wheel 204 Apr 22 02:49 private drwxr-xr-x@ 62 root wheel 2108 Jul 1 08:51 sbin lrwxr-xr-x@ 1 root wheel 11 Apr 22 02:19 tmp -> private/tmp drwxr-xr-x@ 10 root wheel 340 May 27 09:14 usr lrwxr-xr-x@ 1 root wheel 11 Apr 22 02:19 var -> private/var $ cat ls.err $ rm ls.* remove ls.err? y remove ls.out? y $ ./sample2 abcde $ cat ls.out $ cat ls.err ls: abcde: No such file or directory $
0 コメント:
コメントを投稿