본문 바로가기

CS38

[리눅스] Compile & Link with gcc Compile & Link with gcc gcc : FSF의 C, C++ 컴파일러 [소스파일 -> 실행파일] gcc -o 실행파일이름 소스파일이름 -o : 실행 파일 명을 지정 소스파일을 컴파일하여 실행파일을 생성 목적어 파일 생성x [소스파일 -> 목적어파일 -> 실행파일] 1) 컴파일 gcc -c test1.c -c: 컴파일만 하고 링크x / 목적어 파일인 test1.o만 생성 test1.c를 컴파일하여 test1.o를 생성 2) 링크 gcc -o 실행파일이름 목적어파일이름 ex) gcc -o test2 test1.o 이미 컴파일된 목적어 파일인 test1.o와 라이브러리 파일을 묶어 하나의 실행파일 test2 생성 [컴파일 -> 링크 -> 실행파일 (한번에 처리)] gcc -o 실행파일이름 모든-.. 2019. 4. 11.
[리눅스] vi / vim Editor vi / vim Editor 보라색 : 입력모드에서도 작동 초록색 : 명령어 앞에 숫자 입력가능 (문자, 단어, 줄수를 의미) :q [Enter] 수정된 내용이 없을 때 그냥 끝내기 :q! [Enter] 저장하지 않고 강제로 끝내기 0 커서가 라인의 제일 왼쪽으로 이동 ^, Home 제일 처음 문자로 이동 $, End 제일 오른쪽으로 이동 ctrl+b, PgUp 한 화면 위로 올라감 ctrl+f, PgDn 한 화면 아래로 내려감 ctrl+d 반 화면 아래로 내려감 ctrl+u 반 화면 위로 올라감 J / Delete / 백스페이스 현재 커서가 위치한 줄과 다음 줄을 한 줄로 결합하고자 하는 명령 . / u 바로 전에 수정한 명령 / 실행 취소 nG, :숫자[E] n(숫자) 라인 번호로 커서 이동 G 파일.. 2019. 4. 11.
[리눅스] 파일명의 확장 메타문자를 이용한 다양한 파일명의 확장 허용 * : 0개 또는 그 이상의 문자와 대응 (모든 파일) ? : 정확하게 하나의 문자와 대응 [] : 리스트 또느느 명시한 범위내의 모든 문자와 대응 {} : 명시된 리스트 항목(단어)으로 대치 rm * 현재 디렉토리의 모든 파일 ls a* "a"로 시작하는 모든 파일 avc.c ace.c aaa.c cp *.dat .. ".dat"로 끝나는 모든 파일 a.dat file.dat mv ../a4*.dat. "a4"로 시작하고 ".dat"로 끝나는 파일 cat a?.dat a1.dat, aA.dat, ab.dat more ?.dat a.dat, b.dat, c.dat tail ??.d a1.d, A2.d, b3.d grep argc [a-c]* "a" 또는 "b".. 2019. 4. 9.
[리눅스] UNIX 명령어 UNIX 명령어 . = 현재 디렉토리 .. = 위쪽 부모 디렉토리 ~ = 자신의 홈 디렉토리(계정 디렉토리) cat file = 현재 디렉토리 밑에 있는 file보기 clear = 화면을 깨끗이 지우고 커서를 첫째 행으로 옮김 whereis gcc = 명령어가 존재하는 디렉토리 ls = 파일의 목록 -F 파일 유형을 나타내는 기호를 파일명 끝에 표시 -l 파일에 관한 더 상세한 정보를 출력 -a dot 파일을 포함한 모든 파일을 리스트 -R 하위 디렛토리가 있을 경우 계속 밑으로 내려 가면서 출력 cd 디렉토리를 옮김 pwd 현재 작업 디렉토리를 나타냄 mkdir directory를 생성 rmdir directory를 제거 touch 새로운 파일을 생성 or 기존 파일의 수정시간을 변경 rm 파일을 삭제.. 2019. 3. 18.
[리눅스] Putty 설정 Putty 설정 사용자 계정 입력: a184449 비밀번호 입력:***&&&& 로그아웃 : logout, exit, ctrl+D 중 하나 입력 강제종료 필요. //이건 학교 수업리눅스의 경우에만 1. 다른 모든 putty 프로그램 또는 리눅스 터미널에서 로그아웃함 2. putty를 하나만 실행시켜 다시 로그인함 3. psold를 실행키셨을 시 아무것도 나타나지 않으면 정상 4. 나타났다면 강제종료 ->killold 2019. 3. 18.
[윤성우의 열혈 TCP/IP 소켓 프로그래밍] 멀티쓰레드 기반의 서버구현 멀티쓰레드 기반의 서버구현 //시간상 잠깐 챕터를 많이 건너띄어야 겠다.. 프로세스는 나중에 공부하자 ㅠㅠ 프로세스 생성이라는 부담스러운 작업과정을 거침 두 프로세스 사이에서의 데이터 교환을 위해서는 별도의 ipc 기법을 적용해야 함 컨텍스트 스위칭에 따른 부담 쓰레드의 생성 및 컨텍스트 스위칭은 프로세스의 생성 및 컨텍스트 스위칭보다 빠름 쓰레드 사이에서의 데이터 교환에는 특별한 기법이 필요x 프로세스 : 운영체제 관점에서 별도의 실행흐름을 구성하는 단위 쓰레드 : 프로세스 관점에서 별도의 실행흐름을 구성하는 단위 쓰레드의 메모리 구조 프로세스처럼 완전히 메모리 구조를 분리시킬 것이 아니라, 스택 영역만을 분리시킴 컨텍스트 스위칭 시 데이터 영역과 힙은 올리고 내릴 필요x 데이터 영역과 힙을 이용해서 .. 2019. 2. 9.
[윤성우의 열혈 TCP/IP 소켓 프로그래밍] TCP 기반 서버/클라이언트 2 TCP 기반 서버/클라이언트 2 서버 = 데이터의 경계를 구분하지 않고 수신된 데이터를 그대로 전송할 의무만 갖음 클라이언트 = 문장 단위로 데이터를 송수신하기 때문에, 데이터의 경계를 구분해야함 * TCP의 read & write 함수호출은 데이터의 경계를 구분하지 않음 write 함수호출을 통해서 전송한 데이터의 길이만큼 읽어 들이기 위한 반복문의 삽입 TCP를 기반으로 데이터를 구분지어 읽어 들이는데 부가적으로 필요한 구분 참고문서 : 윤성우의 열혈 tcp/ip 소켓 프로그래밍 2019. 2. 8.
[윤성우의 열혈 TCP/IP 소켓 프로그래밍] TCP 기반 서버/클라이언트 (윈도우) TCP 기반 서버/클라이언트 (윈도우) 리눅스 시반 예제와 윈도우 기반 예제는 동일함! 윈도우 코드로 수정> WSAStartup, WSACleanup 함수호출을 동한 소켓 라이브러리의 초기화와 해제 자료형과 변수의 이름을 윈도우 스타일로 변경 데이터 송수신을 위해서 read, write 함수 대신 recv, send 함수 호출 소켓의 종료를 위해서 close 대신 closesocket 함수 호출 참고문서 : 윤성우의 열혈 tcp/ip 소켓 프로그래밍 2019. 2. 7.
반응형