시스템프로그래밍 중간정리(lect7)
파일에는 여러가지 타입이 존재합니다.
regular file, directory file, link file, device file, socket file 등등이 있지요.
그중에서 regular file은 data file이라고도 불립니다. 데이터를 포함하고 있다는 뜻이지요.
regular file (data file) 은 text file, non-text file 두가지로 형태가 나뉩니다.
text file은 아스키코드(또는 UNICODE) 캐릭터를 포함하고 있습니다.
non-text file(이진파일)은 아스키코드를 포함하고 있지 않습니다. 대신에 소리파일(wav,mp3) 또는 사진파일(gif,jpg,mpeg)이나 프로그램파일(exe,elf)이 non-text file에 포함됩니다.
little endian : 만약 0007을 저장해야 한다면 낮은 주소에 07, 높은 주소에 00을 넣는 방법입니다. 낮은 주소에 낮은 바이트(LSB)부터 넣는다는 것이지요.
.wav 파일은 표준적인 오디오 파일 포맷 중 하나입니다. 이 파일은 이진 데이터 형식으로 저장되며, 이 데이터는 헤더와 두 개의 서브 청크로 구성되어 있습니다.
- RIFF 헤더: 'RIFF'는 Resource Interchange File Format의 약자입니다. 이것은 다양한 종류의 데이터를 저장하기 위한 범용 파일 컨테이너 포맷입니다. wav 파일에서, RIFF 헤더는 파일이 wav 포맷임을 식별하고, 파일의 총 크기를 나타냅니다.
- 서브 청크 1 (Subchunk 1): 이 청크는 보통 "fmt "라는 식별자로 시작하며, 오디오 데이터의 형식에 대한 정보를 포함하고 있습니다. 이 정보에는 샘플률(sample rate, 초당 샘플 수), 비트 깊이(bit depth, 각 샘플의 비트 수), 채널 수(모노, 스테레오 등), 오디오 코딩 형식(리니어 PCM 등) 등이 포함됩니다.
- 서브 청크 2 (Subchunk 2): 이 청크는 "data"라는 식별자로 시작하며, 실제 오디오 샘플 데이터를 포함하고 있습니다. 이 데이터는 서브 청크 1에서 정의된 형식에 따라 인코딩됩니다.
이런 방식으로 .wav 파일은 오디오 데이터를 저장하고, 이를 표현하는 방법에 대한 정보를 제공합니다. 이러한 정보를 바탕으로 오디오 플레이어나 응용 프로그램은 .wav 파일을 재생하거나 조작할 수 있습니다.
RIFF (Resource Interchange File Format) 헤더는 다음과 같이 구성됩니다.
- ChunkID: 'RIFF'라는 4바이트 문자열입니다. 이것은 파일이 RIFF 형식이라는 것을 표시합니다.Contains the letters "RIFF" in ASCII form (0x52494646 big-endian form).
- ChunkSize: 이것은 4바이트 정수로서, 전체 RIFF 청크의 크기를 바이트로 나타냅니다. 이 크기에는 'RIFF'라는 ChunkID와 이 ChunkSize 필드 자체는 포함되지 않습니다.
- Format: 'WAVE'라는 4바이트 문자열입니다. 이것은 RIFF 형식의 파일이 특히 WAV 오디오 형식을 사용하고 있다는 것을 나타냅니다.Contains the letters "WAVE" (0x57415645 big-endian form).
서브 청크 1, 즉 'fmt ' 청크는 WAV 파일의 오디오 형식에 대한 정보를 담고 있습니다. 이 청크는 보통 다음과 같이 구성됩니다:
- Subchunk1ID: 'fmt '라는 4바이트 문자열입니다. 이것은 청크가 오디오 형식을 정의하고 있다는 것을 나타냅니다.
- Subchunk1Size: 이것은 4바이트 정수로서, 'fmt ' 청크의 나머지 부분의 크기를 바이트로 나타냅니다. PCM 오디오의 경우 이 값은 보통 16입니다.
- AudioFormat: 이것은 2바이트 정수로서, 오디오 데이터의 코딩 형식을 나타냅니다. 예를 들어, 값이 1이면 오디오 데이터는 리니어 펄스 코드 변조(PCM) 형식으로 인코딩되었음을 나타냅니다.
- NumChannels: 이것은 2바이트 정수로서, 오디오 채널의 수를 나타냅니다. 값이 1이면 모노, 2이면 스테레오입니다.
- SampleRate: 이것은 4바이트 정수로서, 오디오 샘플의 샘플링 주파수를 나타냅니다. 예를 들어, 값이 44100이면 초당 샘플 수는 44,100개입니다.
- ByteRate: 이것은 4바이트 정수로서, 오디오 데이터의 전송 속도를 나타냅니다. 이 값은 보통 SampleRate * NumChannels * BitsPerSample/8와 같습니다.
- BlockAlign: 이것은 2바이트 정수로서, 한 샘플의 바이트 수를 나타냅니다. 이 값은 보통 NumChannels * BitsPerSample/8와 같습니다.
- BitsPerSample: 이것은 2바이트 정수로서, 각 샘플의 비트 수를 나타냅니다. 예를 들어, 값이 16이면 각 샘플은 16비트로 인코딩되었음을 나타냅니다.
'fmt ' 청크 다음에는 'data' 청크가 오며, 이 청크는 실제 오디오 데이터를 담고 있습니다.
서브 청크 2, 즉 'data' 청크는 실제 오디오 데이터를 포함하고 있습니다. 이 청크는 보통 다음과 같이 구성됩니다:
- Subchunk2ID: 'data'라는 4바이트 문자열입니다. 이것은 청크가 실제 오디오 데이터를 담고 있다는 것을 나타냅니다.
- Subchunk2Size: 이것은 4바이트 정수로서, 오디오 데이터의 크기를 바이트로 나타냅니다.
- Data: 이것은 Subchunk2Size 바이트의 오디오 데이터입니다. 이 데이터는 'fmt ' 청크에서 정의된 형식에 따라 인코딩됩니다.
이렇게 오디오 데이터는 'data' 청크에 직접 저장되며, 이 데이터는 재생하거나 수정할 때 사용됩니다. WAV 파일 형식의 장점 중 하나는 이러한 간단한 구조 덕분에 데이터를 쉽게 읽고 쓸 수 있다는 것입니다. 그러나 단점은 파일 크기가 커질 수 있다는 것이며, 이는 일반적으로 압축되지 않은 PCM 오디오 데이터를 사용하기 때문입니다.
Other file system functions
lseek(x, 30, SEEK_SET); // move file read/write pointer to 30.
FILE *f2;
char buf[100];
..........
f2=fopen("./yy","w"); // open ./yy for writing
fprintf(f2,"%s",buf); // write the string in buf into f2
PuTTY Secure File Transfer Protocol (PSFTP)는 SSH (Secure Shell)를 이용하여 원격 서버와 파일을 안전하게 전송할 수 있는 FTP 클라이언트입니다. PSFTP는 PuTTY 패키지의 일부로, 커맨드 라인 인터페이스에서 실행됩니다.
PSFTP를 사용하려면 다음 단계를 따르면 됩니다:
- PSFTP 실행: 커맨드 프롬프트를 열고 psftp 명령을 실행합니다. 다음과 같이 원격 호스트 이름을 함께 지정할 수 있습니다:여기서 username은 원격 시스템에서 사용하는 사용자 이름이고, hostname은 원격 시스템의 도메인 이름이나 IP 주소입니다. "sftp username@hostname "
- 로그인: psftp 명령을 실행하면, 패스워드를 입력하라는 메시지가 표시됩니다. 원격 시스템에 접속할 수 있는 패스워드를 입력하면 됩니다.
- 파일 전송: 로그인에 성공하면, 다음과 같은 커맨드를 사용하여 파일을 전송할 수 있습니다:
- get: 원격 파일을 로컬 시스템으로 복사합니다. 예를 들어, get remote.txt라고 입력하면 remote.txt라는 원격 파일을 현재 로컬 디렉토리로 복사합니다.
- put: 로컬 파일을 원격 시스템으로 복사합니다. 예를 들어, put local.txt라고 입력하면 local.txt라는 로컬 파일을 현재 원격 디렉토리로 복사합니다.
- 종료: 파일 전송이 끝나면 exit 명령을 입력하여 PSFTP를 종료합니다.
이 외에도 cd, pwd, ls 등의 명령을 사용하여 원격 시스템에서 디렉토리를 변경하거나 파일을 리스트하는 등의 작업을 수행할 수 있습니다. help 명령을 입력하면 사용 가능한 모든 명령의 목록을 볼 수 있습니다.
upload/download a file from/to PC
- download psftp.exe from internet
- run psftp.exe as Admin
- login with the same user id and password. assuming your id is 12181844 at 165.246.38.151 server, type:
open 12181844@165.246.38.151
- move local location with “lcd”, remote location with “cd”
lcd . – show current directory in PC
lcd .. – move to parent directory in PC
lcd c: - move to C hard disk in PC
cd . – show current directory in the lab server
cd mydir - move to mydir in the lab server
ls - show files
- to download a file
get myfile - will download “myfile” from the lab server into PC
- to upload a file
put myf - will upload “myf” from PC to the lab server
'C||C++' 카테고리의 다른 글
| 시스템프로그래밍 중간정리(lect9) (0) | 2023.06.01 |
|---|---|
| 시스템프로그래밍 중간정리(lect8) (0) | 2023.05.29 |
| 시스템프로그래밍 중간정리(lect 6) (0) | 2023.05.16 |
| 시스템프로그래밍 중간정리(lect 5) (0) | 2023.05.06 |
| 독되C-2 (0) | 2023.05.02 |