안녕하세요, 환영합니다
이 영상 시간에는 시스템 호출 쓰기입니다
네 쓰기 시스템 콜은 사용자 공간에서 파일에 데이터를 쓰는 데 사용됩니다
시스템콜을 사용하려면 유니스트d를 포함해야 합니다 프로그램의 h요
이것이 쓰기 시스템 콜의 구문입니다
'쓰기 시스템 호출'은 매개 변수를 'fd'로 가져갑니다
오픈 시스템 호출을 이용해 열었던 파일 설명이죠
버퍼로 포인터를 가져갑니다
파일에 쓸 데이터가 들어 있죠
세 번째 논쟁입니다
버퍼에서 파일에 기록될 데이터의 바이트 수를 의미합니다
버퍼는 사용자 공간에서 할당돼야 합니다
실패하면 시스템 호출로 1이 반환되고 성공하면 작성
파일에 쓰인 바이트를 반환합니다
시스템 콜은 판독의 인수와 유사합니다 시스템 콜
버퍼는 파일에 써야 할 데이터의 주소를 가리킵니다
사용자는 데이터를 버퍼에 복사해야 합니다
Count은 파일화하기 위해 사용돼야 하는 바이트의 개수입니다
'fd'는 파일을 여는 문서를 뜻합니다
네 그래서 파일에 데이터를 쓰려면 먼저 파일을 열고 파일 설명을 받은 다음 읽거나
쓰라고 이 핸들을 넘겨야 해요 ,
그 특정 파일에서 읽기 및 쓰기 작업을 수행하기 위한 시스템 호출이죠
버퍼 인수는 입력 데이터를 포함한 메모리 버퍼의 주소를 제공합니다
이 데이터는 'fd'가 지정하는 파일에 작성됩니다
버퍼는 최소한 바이트 길이가 됩니다
그 말은...
네 필체로 지정된 버퍼는 시스템 콜은 몇 바이트를 견딜 만큼 충분해야 합니다
예를 들어, 사용자가 특정 수를 10까지 동일하게 셌다면 말입니다
버퍼는 최소 10바이트의 데이터를 가지고 있어야 합니다
그리고 네 그보다 작을 수는 없습니다 , 바이트보다 작을 수는
없죠
이제 시스템 호출의 예제를 보겠습니다
이 예제에서는 c 프로그램을 사용하는 올바른 시스템을 보여드리겠습니다
파일에 데이터를 쓰는 프로그램인데 파일이 기존 파일이에요
여기선 새 파일을 생성하지 않고 기존 파일에 데이터를 추가하죠
'o_append'와 'o_trunc' 모드를 이용한 예제를 보죠
여기 있네요 필수 헤더 파일을 포함해서요
그리고 100바이트 버퍼를 사용합니다 그리고 사용자의 정의 데이터를 버퍼에 복사합니다 'strcpy() 라이브러리 함수'를
이용합니다
파일 출력을 엽니다 txt는 쓰기 전용 모드고요 추가 플래그도 있어요
추가 플래그의 경우 이전 파일은 폐기되지 않고 새 데이터는 파일의 끝에서부터 작성됩니다
여기요
오픈 시스템이 오류 나면 화면에 오류를 표시하고 프로그램을 종료합니다
성공하면 오픈 시스템 호출은 파일을 반환합니다
그리고요
이 파일 설명을 이용해 파일에 내용을 적습니다
네 이 예제에서는 버프는 사용자 정의 문자열을 가지고 있습니다 문자열 길이를
이용해 파일에 바이트를 지정합니다( strlen() 라이브러리 함수
시스템 콜이 성공했다면 파일에 실제 바이트를 반환합니다
이제 이 프로그램을 컴파일해서 실행해 결과를 보죠
프로그램은 잘 정리했습니다
자, 그럼 이 파일의 내용을 확인해 보겠습니다
파일에 미리 정의된 데이터가 들어 있어요
이제 이 파일을 실행하죠
이제 프로그램을 실행하죠
프로그램을 실행한 후 파일에 입력된 바이트 수를 나타냅니다
이제 파일 내용을 확인해 보죠
여길 보시면 이건 옛날 데이터로 파일에 존재합니다
새 데이터를 추가했습니다
이제 프로그램을 다시 실행해보죠
이제 확인
출력 파일을 확인하면
이 두 줄은 원래 있었는데 이건 추가된 거예요
추가합니다
프로그램을 추가 모드로 작성하면 파일의 맨 끝에서부터 콘텐츠를 추가합니다
또 다른 모드는 자르기 모드로 하는 거죠
파일 내용요
처음부터 쓰여 있어요
오래된 내용물은 폐기된다는 뜻이죠
이제 같은 예제를 보죠
자, 이건 자르기를 사용한 예입니다
이제 코드를 다시 컴파일해보죠
그 전에요
프로그램을 실행하는 거죠
파일 내용을 확인해 보죠
파일 내용물 목록입니다
이제 프로그램을 실행하죠
다시 출력을 확인하겠습니다
여길 보시면 이 세 줄은 사라지고 현재의 새 줄은 파일에 작성됐어요
자르기 모드예요
처음부터 파일을 쓰지만 이전 내용은 버립니다
단말기에서부터 매뉴얼 페이지까지 볼 수 있습니다
매뉴얼 페이지를 보세요
타자 쳐야 해요
예를 들어 설명서를 읽으면
이 페이지에 매뉴얼 페이지가 있어요 헤드 파일 호출 포함돼야 합니다
따라야 할 모든 세부 사항이 나와 있어요
좋은 참고 자료가 될 거예요
이제 같은 방법으로 오픈 시스템 호출을 해보죠
이건 오픈 시스템 콜로 지정하는 거죠
오픈 시스템 콜 구문과 포함돼야 할 헤더 파일이요
같은 방식으로요
읽었는지 확인할 수도
네 읽기 구문이에요 읽기() 시스템 호출 읽기() 시스템 호출에 대한 설명이 있어요
이제 시스템 호출의 예를 더 보죠
이 프로그램에서는 'New_out'이라는 파일을 열겠습니다 txt
이 경우 파일이 없으면 파일을 생성합니다 'o_creened' 플래그를 이용해서요
그리고 'o_append' 모드를 지정합니다 파일이 생성되면 '774' 사용 권한
모드로 생성됩니다
파일 생성이 실패하면 '1'을 반환합니다
오픈 시스템 콜은 '1'을 반환하고 에러를 표시해 프로그램을 종료합니다
열었다 합니다 만약 시스템 호출이 성공하면 생성된 파일의 파일 설명을
얻게 되고 이제 버퍼를 작성합니다
버퍼의 내용은 파일 설명을 이용해 파일에 쓰여집니다 그리고 마지막에 파일을
닫습니다 ? 네
이제 프로그램을 컴파일해서 결과를 보죠
프로그램을 정리했습니다
파일 이름은 'write2'입니다 c, 실행 전에 'write2'라는 출력을 생성했습니다
파일을 보여주세요
뉴 아웃 txt
확인해 보죠
내용물
'new_out'이라는 파일이 없습니다 이제 프로그램을
실행하겠습니다
자, 프로그램을 실행한 후에는 파일 내용을 확인해 보도록 하겠습니다
이제 존재하지 않는 파일을 생성했습니다 프로그램에서 여기 있는 콘텐츠를
작성했죠
샘플을 파일에 적었습니다
이제 프로그램을 다시 실행하겠습니다
파일 내용도 다시 확인하고요
여길 보시면 이건 이전 콘텐츠였고 새 콘텐츠인 파일을 추가했어요
'o_append' 모드를 사용했기 때문입니다
네 네 안 그러면 어떻게 되는지요
부착이나 '오'참치 모드 없이 '오 크레이트'만 지정했습니다
이제 프로그램을 다시 컴파일해보죠
실행 전에 프로그램을 정리했습니다
옛날 파일은 지워요
이제 뉴_out 파일이 없어요 이제 파일을
실행할게요
프로그램을 실행했고 에러 없이 잘 진행되고 있어요
이제 파일 내용을 확인해 보죠
보다시피 파일 'new_out'이 생성됐어요 txt와 내용은 파일에 작성됩니다
이제 다시 프로그램을 실행하겠습니다
이제 파일 내용을 확인해 보죠
여기 보시면 새로운 콘텐츠는 추가되지 않았습니다
이 말은 추가나 자르기를 지정하지 않으면 기본값으로 자르기 모드가 고려된다는
거죠
다음 수업 때 같이 봐요
오늘 회의는 '종결'로 진행합니다
고마워요