開発環境
- 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 コメント:
コメントを投稿