Lab 1. 시스템 호출을 이용하는 mycp.c mycphint1.c & mycphint2.c coding & compile & run 제출 방법 (집에서도 접속 가능합니다) 2 Electronic versions: multi.incheon.ac.kr (117.16.244.53)의.

Slides:



Advertisements
Similar presentations
Linux1 Linux 개요 Linux 방문하여 홈페이지 등록하기 Vi 편집해 보기. Linux2 개요  Linux 란 ? 1991 Linus Benedict Torvalds 가 만든 Unix 의 한 버전 GNU(GNU is Not Unix) » 프로그램이나 정보의.
Advertisements

Tcl/Tk 민 인학 한국 Tcl/Tk 커뮤니티.
1.
Format String Attack! 포맷 스트링 공격 경일대학교 사이버보안학과 학년 남주호.
기초C언어 제1주 실습 강의 소개, C언어 개요, Cygwin/Eclipse 사용 컴퓨터시뮬레이션학과 2016년 봄학기
Linux/UNIX Programming
제3장 C 프로그래밍 환경.
1장 리눅스의 기본 개념과 프로그램 작성 리눅스의 기본 개념 시스템에 접속하기 리눅스의 프로그래밍 환경
Database Laboratory, Hong Ik University
Power Java 제3장 이클립스 사용하기.
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 1-1 C 언어의 개론적 이야기 프로그래밍 언어란 무엇인가? 컴파일이란 무엇인가? 사람과 컴파일러가 이해할 수 있는 약속된 형태의 언어 C 언어도 프로그래밍 언어 중 하나이다. 컴파일이란 무엇인가? 프로그래밍.
C 프로그래밍 소개 숙명여대 창병모 2011 가을.
제 8 장  파서 생성기 YACC 사용하기.
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
Linux System Programming
1 유닉스 시스템 프로그래밍 개요.
제9장 C 프로그래밍 환경 창병모
6 프로세스 생성과 실행.
조 병 규 Software Quality Lab. 한국교통대학교
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
Linux Compile.
12장 파이프.
C / C++ Programming in multi platform
Internet Protocol and Programming
9장 파일 입출력.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Beginning Linux Programming
Homework 6… 12월 2일(금) 11:59pm까지 자신의 이름과 학번을 출력해 주는 유닉스/리눅스 네트워크 소켓 서버 프로그램 과 클라이언트 프로그램 을 작성해 보세요 참고 (실습1) Hello 프로그램 helloserver.c helloclient.c 컴파일.
1장. 프로그래밍 언어, C 프로그래밍.
파일 기술자 파일 기술자 현재 열려있는 파일을 구분하는 정수값 저수준 파일 입출력에서 열린 파일을 참조하는데 사용
4장 파일.
Cross Compiler 설치.
C언어 프로그래밍의 이해 Ch14. 파일 입출력.
1주차: 프로그래밍언어란 무엇인가? C 언어란? C 프로그래밍을 위한 준비
10장 C 표준 파일 입출력 子曰 學而時習(실습?)之 不亦悅乎.
Cross Compiler를이용한 커널 컴파일 및 포팅
HW 1 : 운영체제 기본 이해 (3월 30일 금까지) 1장 창틀 채우기 (텍스트 파일에 설명하거나 그림 파일로 제출)
제 11 장 전처리기.
개정판 누구나 즐기는 C언어 콘서트 제6장 반복문 출처: pixabay.
Linux/UNIX Programming
19. 함수 포인터와 void 포인터.
Internet Protocol and Programming
쉽게 풀어쓴 C언어 Express 제2장 프로그램 작성 과정 C Express.
작은 분야의 일을 훌륭하게 해내는 자그마한 도구들을 개발자들에게 제공하고 개발자들은 이 도구들을 창의적으로 결합하여 사용하자.
editing program files with vi 기본적인 Linux commands
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
제9장 C 프로그래밍 환경 TOPCIT (Test of Practical Competency in IT)
Linux/UNIX Programming
Fflush 사용이유 및 방법 [이유] 키보드에서 입력된 내용은 입력버퍼에 저장되었다가 Enter 키가 들어오면 프로그램으로 전달됨 이 때 입력버퍼에 있는 Enter 키도 프로그램으로 전달됨 그러므로 아래와 같은 프로그램에서 문자 하나를 입력해도 Enter키도 입력된 것으로.
U N I X 창원대학교 전자계산학과 김병찬.
Internet Protocol and Programming
Homework 7… 마지막 수업시간까지 (실습) 매개변수로 입력 받아 처리할 수 있도록 수정해 보세요
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
제 6 강 Getting started.
Internet Protocol and Programming
GDB - GNU Debugger 김진용.
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
기초C언어 제2주 실습 프로그래밍의 개념, 프로그램 작성 과정 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
Internet Protocol and Programming
Internet Protocol and Programming
실습과제 1번 생성된 파일 basic.txt를 프로젝트 폴더에서 메모장으로 열고 내용을 확인
과제 4: Thread (5월 9일까지) 4장 연습문제 풀이
argc, argv 의 사용방법 #include <stdio.h>
C 13장. 입출력 라이브러리 #include <stdio.h> int main(void) { int num;
어서와 C언어는 처음이지 제23장.
Git을 이용한 버전 관리 - Branch 실습
C.
숙제 작성 및 제출 과정 김진하 2008/03/14.
3장 파일 다루기 한빛미디어(주).
Presentation transcript:

Lab 1. 시스템 호출을 이용하는 mycp.c mycphint1.c & mycphint2.c coding & compile & run 제출 방법 (집에서도 접속 가능합니다) 2 Electronic versions: multi.incheon.ac.kr (117.16.244.53)의 지정 디렉토리 /export/home/os2011hwa 또는 os2011hwb 에 자기 학번의 디렉토리 만들고 그 곳에 소스파일과 실행파일 복사 mylinux.incheon.ac.kr (117.16.244.59) 지정 디렉토리 /home/os2011hwa 또는 os2011hwb 에 자기 학번의 디렉토리 만들고 그 곳에 소스파일과 실행파일 복사 운영체제

Example of System Calls System call sequence to copy the contents of one file to another file $ mycp a b 운영체제

(Hint 1: mycphint1.c) 과제 2-2 연습문제 2.18 #include <stdio.h> #include <unistd.h> #define NAME_LENGTH 25 int main(void) { char in_file[NAME_LENGTH], out_file[NAME_LENGTH]; FILE *in, *out; int c; printf("Enter source file name: "); scanf("%s",in_file); printf("Enter destination file name: "); scanf("%s",out_file); if ( (in = fopen(in_file,"r")) == NULL) { fprintf(stderr,"Cannot open %s for reading\n",in_file); return -1; } if ( (out = fopen(out_file,"w")) == NULL) { fprintf(stderr,"Cannot open %s for writing\n",out_file); while ( (c = getc(in)) != EOF) putc(c,out); fclose(in); fclose(out); 운영체제

(Hint 2: mycphint2.c) 과제 2-2 연습문제 2.18 3/28야 (Hint 2: mycphint2.c) 과제 2-2 연습문제 2.18 #include <stdio.h> #include <stdlib.h> #define PERMS 0644 char *progname; main(int argc, char *argv[]) { int f1, f2, n; char buf[BUFSIZ]; if (argc != 3) printf("Usage: %s a b\n", progname); if ((f1 = open(argv[1], O_RDONLY, 0)) == -1) printf("can't open %s\n", argv[1]); if ((f2 = open(argv[2], O_RDWR|O_CREAT|O_APPEND )) == -1) printf("can't creat %s\n", argv[2]); while ((n = read(f1, buf, BUFSIZ)) > 0) if (write(f2, buf, n) != n) printf("write errono"); exit(0); } 수정1: include 수정2: permission 수정3: truncate 운영체제

(C언어 보충) Command-line Arguments $ gcc myecho.c –o myecho $ ./myecho hello world! Output hello world! argc 와 argv[] argc=3 argv[0]: “echo” argv[1]: “hello” argv[2]: “world” Source code $ cat myecho.c #include <stdio.h> main(int argc, char *argv[]) { int i; for (i = 1; i < argc; i++) printf(“%s%s”, argv[i], (i < argc-1) ? “ “ : “”); printf(“\n”); return 0; } argv: myecho\0 hello\0 world\0 운영체제

(C언어 보충) argv 처리: optional flag myecho2.c (숫자 option 처리) $ cat myecho2.c #include <stdio.h> main(int argc, char *argv[]) { int i; for(i=1; i<argc; i++) printf("%s%s", argv[i], (i<argc-1)? " “ : ""); if(argv[i][0] == '-') printf(“ (제곱값은 %d) ", (atoi(argv[i]))*(atoi(argv[i]))); } printf("\n"); return 0; 운영체제

(C언어 보충) argv 처리: optional flag myfind -n -x pattern $ cat myfind.c #include <stdio.h> #include <string.h> #define MAXLINE 1000 int getline(char *line, int max); /*find : print lines that match pattern from 1st arg */ main(int argc, char *argv[]) { char line[MAXLINE]; long lineno = 0; int c, except =0, number =0, found =0; while(--argc > 0 && (*++argv)[0] == '-') while(c = *++argv[0]) switch(c) { case 'x': except = 1; break; case 'n': number = 1; default: printf("find : illegal optin %c\n",c); argc = 0; found = -1; } if(argc != 1) printf("Usage : find -x -n patttern\n"); else while(getline(line, MAXLINE) > 0) { lineno++; if((strstr(line, *argv) != NULL ) != except) { if(number) printf("%ld:", lineno); printf("%s\n", line); found++; } return found; int getline(char s[], int lim) { int c, i; for (i=0; i<lim-1 && (c=getchar())!=EOF && c!='\n'; ++i) s[i] = c; if (c == '\n') { s[i] = '\0'; ++i; return i; 운영체제

Linux/Unix C 언어 프로그래밍 cc compiler man cc $ cc –o hello hello.c $ hello gcc compiler GNU project C and C++ Compiler GNU(GNU’s Not Unix, Free Software Foundation의 Richard Stallman) man gcc info gcc $ gcc hello.c $ a.out $ gcc –o hello hello.c 운영체제

유닉스 디버거 : gdb 프로그램을 기호적으로 디버깅 : dbx, adb, sdb, gdb, ddd(Motif) 등 단일단계이동(single stepping) 정지점(breakpoint) 디버거 내에서 편집 변수의 접근 및 수정 함수의 탐색 추적(tracing) gdb GNU debugger, 별도의 프롬프트 표시 관련정보는, 프롬프트에서 help를 입력 dbx executableFilename 디버그를 위한 프로그램 준비 cc의 -g 옵션으로 프로그램을 번역 ⇒ 목적 모듈 내에 디버깅 정보 포함 운영체제

유닉스 디버거 : gdb gdb 실행 gdb 실행 파일이름 : 실행 파일을 디버그함 (실행 파일은 반드시 -g 옵션을 사용하여 컴파일되어야 함) gdb 명령어  b (breakpoint) : 실행 중 디버그를 위해 멈추는 위치 지정 b 함수명 : 함수명에서 멈춤 b 라인번호 : 라인번호에서 멈춤 r (run) : 실행 시작 n (next) : 현재 라인 실행 (함수의 경우 실행하고 다음 라인으로 넘어 감) s (step) : 현재 라인 실행 (함수의 경우 호출된 함수 내로 들어가 실행 계속) c (continue) : 다음 breakpoint까지 실행 l (list) : 현재 수행되고 있는 라인부터 10개 라인씩 연속적으로 소스 코드를 프린트 p (print) 변수명 : 변수명으로 저장되어 있는 내용을 프린트 h (help) : 도움말 q (quit) : gdb 종료  운영체제

$ Vi 편집 모드 ~ ~ Vi mode (Vi 명령 모드) x r dd a i esc oO R $Vi filename :q! (기록 않음) ZZ(기록) :wq a i esc x r dd 커서이동 append insert oO open R replace 운영체제

Vi를 이용한 기본 텍스트 편집 텍스트의 삭제 및 취소(undo) x(exclude?) d(delete) dw db d$ d^ r(replace) u(update) U(Update) 최근 명령 재 실행 . 파일 관리 Vi를 벗어나지 않고 저장하기: :w 저장 않고 끝내기: :q! 또 다른 파일 편집: :e xx 또는 :e! xx 다른 파일을 읽어 와 덧붙이기: :r xx http://marvel.inchon.ac.kr/ 의 Information 참조 커서의 이동 hjkl 이용 H J K L  [Vi mode] 4j G 명령으로 원하는 행으로 이동 7G G : 마지막 행으로 화면 이동 ^F ^B ^D ^U 텍스트 추가, 삽입, 수정 a(append) i(insert) o(open) O(Open) R(Replace) 운영체제