SlideShare a Scribd company logo
1 of 10
Download to read offline
NSTask
2013.12.18
김응식 (EungShik Kim)

@neoroman
What is NSTask for?

NSTask Class 사용 목적

•

다른 프로그램을 서브프로세스
로 띄우고 싶을 때

•

다른 프로그램을 모니터하고 싶
을때

•

Unix함수인 fork()와 exec()를 사
용하기 쉽게 래핑한 것
How to use NSTask?
$ zipinfo -1 test.zip | {stdout}
NSTask

NSPipe

NSData

프로세스는 표준 입력(stdin)으로 데이터를 읽어오고 표준
출력(stdout)과 표준 에러(stderr)로 데이터를 작성함
외부 프로세스로부터 데이터를 파이프NSPipe 클래스를 통
해 가져옴
구현 순서
1. /usr/bin/zipinfo라는 외부 프로세스를 이용하는 애플리케이션
을 작성한다.
2. 외부 프로세스에 몇 가지 인수를 보내고, 프로세스의 표준 출력
에서 결과를 읽어온다.
3. Xcode에 ZIPspector 라는 이름으로 새로운 Cocoa Application
프로젝트를 생성한다.
4. 파일 연동을 위해 target의 정보에 UTI 값을 넣고 Viewer 역할을
부여한다.
5. readFromData 대신 readFromURL에 NSTask를 정의한다.
6. NSPipe을 통해 NSTask의 stdout을 읽어오고 이를 tableView에
뿌린다.
“Coding Demo”
– Task Appleseed
Object Diagram
Powered by draw.io - https://drive.google.com/file/d/0B6OOg4_omDKoMGZIYjkyWDMxRFU/edit?usp=sharing
“One More …?”
– Challenge Appleseed
문제

tar와 tgz 도 동작할 수 있도록 UTI identifier 추가
1. TAR UTI : public.tar-archive
2. TGZ UTI : org.gnu.gnu-zip-tar-archive
3. TAR.Z UTI : LZW format - http://
stackoverflow.com/questions/13216935/tar-z-fileformat-structure-header
Thanks
Uniform Type Identifiers Reference
https://developer.apple.com/library/mac/documentation/Miscellaneous/
Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html

More Related Content

What's hot

1.mysql disk io 모니터링 및 분석사례
1.mysql disk io 모니터링 및 분석사례1.mysql disk io 모니터링 및 분석사례
1.mysql disk io 모니터링 및 분석사례I Goo Lee
 
윈도우에서 도커 설치
윈도우에서 도커 설치윈도우에서 도커 설치
윈도우에서 도커 설치choi sungwook
 
Apache ZooKeeper 소개
Apache ZooKeeper 소개Apache ZooKeeper 소개
Apache ZooKeeper 소개중선 곽
 
Windows via C/C++ 06 스레드의 기본
Windows via C/C++ 06 스레드의 기본Windows via C/C++ 06 스레드의 기본
Windows via C/C++ 06 스레드의 기본ssuser0c2478
 
분석,설계보고서
분석,설계보고서분석,설계보고서
분석,설계보고서Ahchim Ryu
 
Windows kernel basic exploit
Windows kernel basic exploitWindows kernel basic exploit
Windows kernel basic exploitKyoungseok Yang
 
7. variable scope rule,-storage_class
7. variable scope rule,-storage_class7. variable scope rule,-storage_class
7. variable scope rule,-storage_class웅식 전
 
Zoo keeper 소개
Zoo keeper 소개Zoo keeper 소개
Zoo keeper 소개주표 홍
 
취약점 점검도구 실습 보고서
취약점 점검도구 실습 보고서 취약점 점검도구 실습 보고서
취약점 점검도구 실습 보고서 Dong-Jin Park
 
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은jieun kim
 
Windws via c/c++ chapter 6
Windws via c/c++ chapter 6Windws via c/c++ chapter 6
Windws via c/c++ chapter 6SukYun Yoon
 
thread_seminar
thread_seminarthread_seminar
thread_seminarU.g. Yong
 
Windows via c/c++ ch03. 커널오브젝트
Windows via c/c++ ch03. 커널오브젝트Windows via c/c++ ch03. 커널오브젝트
Windows via c/c++ ch03. 커널오브젝트ssuser0c2478
 
스톰 미리보기
스톰 미리보기스톰 미리보기
스톰 미리보기June Yi
 
Pyspark Demo1,Demo2 정리
Pyspark Demo1,Demo2 정리Pyspark Demo1,Demo2 정리
Pyspark Demo1,Demo2 정리민기 박
 

What's hot (20)

1.mysql disk io 모니터링 및 분석사례
1.mysql disk io 모니터링 및 분석사례1.mysql disk io 모니터링 및 분석사례
1.mysql disk io 모니터링 및 분석사례
 
Hadoop io part2
Hadoop io part2Hadoop io part2
Hadoop io part2
 
윈도우에서 도커 설치
윈도우에서 도커 설치윈도우에서 도커 설치
윈도우에서 도커 설치
 
Zookeeper 소개
Zookeeper 소개Zookeeper 소개
Zookeeper 소개
 
fengfengfeng
fengfengfengfengfengfeng
fengfengfeng
 
Apache ZooKeeper 소개
Apache ZooKeeper 소개Apache ZooKeeper 소개
Apache ZooKeeper 소개
 
Windows via C/C++ 06 스레드의 기본
Windows via C/C++ 06 스레드의 기본Windows via C/C++ 06 스레드의 기본
Windows via C/C++ 06 스레드의 기본
 
분석,설계보고서
분석,설계보고서분석,설계보고서
분석,설계보고서
 
Windows kernel basic exploit
Windows kernel basic exploitWindows kernel basic exploit
Windows kernel basic exploit
 
Gcd ppt
Gcd pptGcd ppt
Gcd ppt
 
kt-cloud
kt-cloudkt-cloud
kt-cloud
 
7. variable scope rule,-storage_class
7. variable scope rule,-storage_class7. variable scope rule,-storage_class
7. variable scope rule,-storage_class
 
Zoo keeper 소개
Zoo keeper 소개Zoo keeper 소개
Zoo keeper 소개
 
취약점 점검도구 실습 보고서
취약점 점검도구 실습 보고서 취약점 점검도구 실습 보고서
취약점 점검도구 실습 보고서
 
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
 
Windws via c/c++ chapter 6
Windws via c/c++ chapter 6Windws via c/c++ chapter 6
Windws via c/c++ chapter 6
 
thread_seminar
thread_seminarthread_seminar
thread_seminar
 
Windows via c/c++ ch03. 커널오브젝트
Windows via c/c++ ch03. 커널오브젝트Windows via c/c++ ch03. 커널오브젝트
Windows via c/c++ ch03. 커널오브젝트
 
스톰 미리보기
스톰 미리보기스톰 미리보기
스톰 미리보기
 
Pyspark Demo1,Demo2 정리
Pyspark Demo1,Demo2 정리Pyspark Demo1,Demo2 정리
Pyspark Demo1,Demo2 정리
 

Viewers also liked

Realidad aumentada
Realidad aumentadaRealidad aumentada
Realidad aumentadamdsguzman
 
Realidad aumentada
Realidad aumentadaRealidad aumentada
Realidad aumentadamdsguzman
 
Mariaactividad2 1
Mariaactividad2 1Mariaactividad2 1
Mariaactividad2 1mdsguzman
 
Mariaactividad2 1
Mariaactividad2 1Mariaactividad2 1
Mariaactividad2 1mdsguzman
 
Juegos semanticos
Juegos semanticosJuegos semanticos
Juegos semanticosmdsguzman
 
Juegos semanticos
Juegos semanticosJuegos semanticos
Juegos semanticosmdsguzman
 
Realidad aumentada celia cuberos
Realidad aumentada celia cuberosRealidad aumentada celia cuberos
Realidad aumentada celia cuberoscelia cuberos
 
Realidad aumentada
Realidad aumentadaRealidad aumentada
Realidad aumentadamdsguzman
 
Maestro de maestros
Maestro de maestrosMaestro de maestros
Maestro de maestrosmdsguzman
 

Viewers also liked (9)

Realidad aumentada
Realidad aumentadaRealidad aumentada
Realidad aumentada
 
Realidad aumentada
Realidad aumentadaRealidad aumentada
Realidad aumentada
 
Mariaactividad2 1
Mariaactividad2 1Mariaactividad2 1
Mariaactividad2 1
 
Mariaactividad2 1
Mariaactividad2 1Mariaactividad2 1
Mariaactividad2 1
 
Juegos semanticos
Juegos semanticosJuegos semanticos
Juegos semanticos
 
Juegos semanticos
Juegos semanticosJuegos semanticos
Juegos semanticos
 
Realidad aumentada celia cuberos
Realidad aumentada celia cuberosRealidad aumentada celia cuberos
Realidad aumentada celia cuberos
 
Realidad aumentada
Realidad aumentadaRealidad aumentada
Realidad aumentada
 
Maestro de maestros
Maestro de maestrosMaestro de maestros
Maestro de maestros
 

Similar to Osx cocoa study-ch36_nstask

[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석GangSeok Lee
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows TerminalOnGameServer
 
리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리Seungyong Lee
 
3. 악성코드 분석 사례
3. 악성코드 분석 사례3. 악성코드 분석 사례
3. 악성코드 분석 사례Youngjun Chang
 
(140407) #fitalk d trace를 이용한 악성코드 동적 분석
(140407) #fitalk   d trace를 이용한 악성코드 동적 분석(140407) #fitalk   d trace를 이용한 악성코드 동적 분석
(140407) #fitalk d trace를 이용한 악성코드 동적 분석INSIGHT FORENSIC
 
Linux programming study
Linux programming studyLinux programming study
Linux programming studyYunseok Lee
 
3. 악성코드 분석 사례
3. 악성코드 분석 사례3. 악성코드 분석 사례
3. 악성코드 분석 사례Youngjun Chang
 
Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10hungrok
 
IoT with Raspberry Pi + Node JS - Chapter 1
IoT with Raspberry Pi + Node JS - Chapter 1IoT with Raspberry Pi + Node JS - Chapter 1
IoT with Raspberry Pi + Node JS - Chapter 1Park Jonggun
 
파이썬 스터디 15장
파이썬 스터디 15장파이썬 스터디 15장
파이썬 스터디 15장SeongHyun Ahn
 
악성코드와 분석 방안
악성코드와 분석 방안악성코드와 분석 방안
악성코드와 분석 방안Youngjun Chang
 
Open vSwitch의 Vendor Extension 구현
Open vSwitch의 Vendor Extension 구현Open vSwitch의 Vendor Extension 구현
Open vSwitch의 Vendor Extension 구현Seung-Hoon Baek
 
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발Jeongkyu Shin
 
2.apache spark 실습
2.apache spark 실습2.apache spark 실습
2.apache spark 실습동현 강
 
19. Application - Spark Streaming 1
19. Application - Spark Streaming 119. Application - Spark Streaming 1
19. Application - Spark Streaming 1merry7
 
Lecture 1: Introduction to Python and TensorFlow
Lecture 1: Introduction to Python and TensorFlowLecture 1: Introduction to Python and TensorFlow
Lecture 1: Introduction to Python and TensorFlowSang Jun Lee
 
Hyperledger farbric build your first network install and analysis
Hyperledger farbric   build your first network install and analysisHyperledger farbric   build your first network install and analysis
Hyperledger farbric build your first network install and analysis병준 김
 

Similar to Osx cocoa study-ch36_nstask (20)

[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
 
04 프로세스
04 프로세스04 프로세스
04 프로세스
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
 
리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리
 
3. 악성코드 분석 사례
3. 악성코드 분석 사례3. 악성코드 분석 사례
3. 악성코드 분석 사례
 
(140407) #fitalk d trace를 이용한 악성코드 동적 분석
(140407) #fitalk   d trace를 이용한 악성코드 동적 분석(140407) #fitalk   d trace를 이용한 악성코드 동적 분석
(140407) #fitalk d trace를 이용한 악성코드 동적 분석
 
Linux programming study
Linux programming studyLinux programming study
Linux programming study
 
3. 악성코드 분석 사례
3. 악성코드 분석 사례3. 악성코드 분석 사례
3. 악성코드 분석 사례
 
Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10
 
JetsonTX2 Python
 JetsonTX2 Python  JetsonTX2 Python
JetsonTX2 Python
 
IoT with Raspberry Pi + Node JS - Chapter 1
IoT with Raspberry Pi + Node JS - Chapter 1IoT with Raspberry Pi + Node JS - Chapter 1
IoT with Raspberry Pi + Node JS - Chapter 1
 
파이썬 스터디 15장
파이썬 스터디 15장파이썬 스터디 15장
파이썬 스터디 15장
 
악성코드와 분석 방안
악성코드와 분석 방안악성코드와 분석 방안
악성코드와 분석 방안
 
Open vSwitch의 Vendor Extension 구현
Open vSwitch의 Vendor Extension 구현Open vSwitch의 Vendor Extension 구현
Open vSwitch의 Vendor Extension 구현
 
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
 
2.apache spark 실습
2.apache spark 실습2.apache spark 실습
2.apache spark 실습
 
19. Application - Spark Streaming 1
19. Application - Spark Streaming 119. Application - Spark Streaming 1
19. Application - Spark Streaming 1
 
Lecture 1: Introduction to Python and TensorFlow
Lecture 1: Introduction to Python and TensorFlowLecture 1: Introduction to Python and TensorFlow
Lecture 1: Introduction to Python and TensorFlow
 
Hyperledger farbric build your first network install and analysis
Hyperledger farbric   build your first network install and analysisHyperledger farbric   build your first network install and analysis
Hyperledger farbric build your first network install and analysis
 

More from EungShik (Henry) Kim

[Apple] 애플 wwdc 2015 중요사항 공유 세미나
[Apple] 애플 wwdc 2015 중요사항 공유 세미나[Apple] 애플 wwdc 2015 중요사항 공유 세미나
[Apple] 애플 wwdc 2015 중요사항 공유 세미나EungShik (Henry) Kim
 
[Osx dev] server essential lesson 11. managing with profile manager
[Osx dev] server essential   lesson 11. managing with profile manager[Osx dev] server essential   lesson 11. managing with profile manager
[Osx dev] server essential lesson 11. managing with profile managerEungShik (Henry) Kim
 
[Osx dev] server essential lesson 10. configuring os x server to provide de...
[Osx dev] server essential   lesson 10. configuring os x server to provide de...[Osx dev] server essential   lesson 10. configuring os x server to provide de...
[Osx dev] server essential lesson 10. configuring os x server to provide de...EungShik (Henry) Kim
 
How to Develop iDrummer for the 1st time
How to Develop iDrummer for the 1st timeHow to Develop iDrummer for the 1st time
How to Develop iDrummer for the 1st timeEungShik (Henry) Kim
 
How To Distribute iPhone Apps to App Store
How To Distribute iPhone Apps to App StoreHow To Distribute iPhone Apps to App Store
How To Distribute iPhone Apps to App StoreEungShik (Henry) Kim
 
iOS 5 & Xcode 4: ARC, Stroryboards
iOS 5 & Xcode 4: ARC, StroryboardsiOS 5 & Xcode 4: ARC, Stroryboards
iOS 5 & Xcode 4: ARC, StroryboardsEungShik (Henry) Kim
 

More from EungShik (Henry) Kim (12)

[Apple] 애플 wwdc 2015 중요사항 공유 세미나
[Apple] 애플 wwdc 2015 중요사항 공유 세미나[Apple] 애플 wwdc 2015 중요사항 공유 세미나
[Apple] 애플 wwdc 2015 중요사항 공유 세미나
 
Fuse소개
Fuse소개Fuse소개
Fuse소개
 
What is mdm
What is mdmWhat is mdm
What is mdm
 
[Osx dev] server essential lesson 11. managing with profile manager
[Osx dev] server essential   lesson 11. managing with profile manager[Osx dev] server essential   lesson 11. managing with profile manager
[Osx dev] server essential lesson 11. managing with profile manager
 
[Osx dev] server essential lesson 10. configuring os x server to provide de...
[Osx dev] server essential   lesson 10. configuring os x server to provide de...[Osx dev] server essential   lesson 10. configuring os x server to provide de...
[Osx dev] server essential lesson 10. configuring os x server to provide de...
 
How to Develop iDrummer for the 1st time
How to Develop iDrummer for the 1st timeHow to Develop iDrummer for the 1st time
How to Develop iDrummer for the 1st time
 
How To Distribute iPhone Apps to App Store
How To Distribute iPhone Apps to App StoreHow To Distribute iPhone Apps to App Store
How To Distribute iPhone Apps to App Store
 
OpenGL ES on iOS
OpenGL ES on iOSOpenGL ES on iOS
OpenGL ES on iOS
 
iOS 5 & Xcode 4: ARC, Stroryboards
iOS 5 & Xcode 4: ARC, StroryboardsiOS 5 & Xcode 4: ARC, Stroryboards
iOS 5 & Xcode 4: ARC, Stroryboards
 
2D games with iOS or Corona
2D games with iOS or Corona2D games with iOS or Corona
2D games with iOS or Corona
 
What is corona sdk (Korean)
What is corona sdk (Korean)What is corona sdk (Korean)
What is corona sdk (Korean)
 
Smart phone&tv 20101015
Smart phone&tv 20101015Smart phone&tv 20101015
Smart phone&tv 20101015
 

Osx cocoa study-ch36_nstask

  • 2. What is NSTask for? NSTask Class 사용 목적 • 다른 프로그램을 서브프로세스 로 띄우고 싶을 때 • 다른 프로그램을 모니터하고 싶 을때 • Unix함수인 fork()와 exec()를 사 용하기 쉽게 래핑한 것
  • 3. How to use NSTask? $ zipinfo -1 test.zip | {stdout} NSTask NSPipe NSData 프로세스는 표준 입력(stdin)으로 데이터를 읽어오고 표준 출력(stdout)과 표준 에러(stderr)로 데이터를 작성함 외부 프로세스로부터 데이터를 파이프NSPipe 클래스를 통 해 가져옴
  • 4.
  • 5. 구현 순서 1. /usr/bin/zipinfo라는 외부 프로세스를 이용하는 애플리케이션 을 작성한다. 2. 외부 프로세스에 몇 가지 인수를 보내고, 프로세스의 표준 출력 에서 결과를 읽어온다. 3. Xcode에 ZIPspector 라는 이름으로 새로운 Cocoa Application 프로젝트를 생성한다. 4. 파일 연동을 위해 target의 정보에 UTI 값을 넣고 Viewer 역할을 부여한다. 5. readFromData 대신 readFromURL에 NSTask를 정의한다. 6. NSPipe을 통해 NSTask의 stdout을 읽어오고 이를 tableView에 뿌린다.
  • 7. Object Diagram Powered by draw.io - https://drive.google.com/file/d/0B6OOg4_omDKoMGZIYjkyWDMxRFU/edit?usp=sharing
  • 8. “One More …?” – Challenge Appleseed
  • 9. 문제 tar와 tgz 도 동작할 수 있도록 UTI identifier 추가 1. TAR UTI : public.tar-archive 2. TGZ UTI : org.gnu.gnu-zip-tar-archive 3. TAR.Z UTI : LZW format - http:// stackoverflow.com/questions/13216935/tar-z-fileformat-structure-header
  • 10. Thanks Uniform Type Identifiers Reference https://developer.apple.com/library/mac/documentation/Miscellaneous/ Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html