C에서 쓰기 시스템 호출을 사용하는 방법

How Use Write System Call C



시스템 호출은 프로그램과 Linux 운영 체제 커널 사이에서 기본 게이트웨이 역할을 합니다. C 프로그래밍 경력 전반에 걸쳐 시스템 호출이 있어야 할 것이 거의 확실하지만, 뛰어난 생산성을 목표로 하든 특정 스타일의 기능을 목표로 하든 Glibc 저장소 또는 인기 있는 Linux 배포판에서 찾을 수 있는 기타 표준 라이브러리는 대부분의 경우 충분할 것입니다. 요구 사항. 이 가이드에서는 C 언어의 쓰기 시스템 호출에 대한 개념을 설정합니다.

통사론:

#포함하다

크기_t쓰다(int fd, const void*buf, size_t 개수);

위의 구문에서 첫 번째 줄은 시스템 호출을 위한 라이브러리를 보여줍니다. 두 번째 줄에서 fd는 실제로 프로세스의 열린 파일을 지정하는 숫자인 파일 설명자를 나타냅니다. *buf 키워드는 버퍼를 나타냅니다. 여기에는 모든 데이터가 포함됩니다. 다음은 카운트입니다. 버퍼에서 파일 설명자에 쓸 바이트 수입니다.







전제 조건 설치:

C 언어 코드를 실행하려면 먼저 Linux 배포판에 일부 패키지를 설치해야 합니다. 쓰기 시스템 호출에 대한 추가 정보를 보려면 manpages-dev 패키지를 설치해야 합니다. Ctrl+Alt+T 단축키를 사용하여 터미널을 열려면 연 후 맨페이지를 설치하려면 아래의 apt install 명령 뒤에 manpages-dev 키워드를 작성하십시오.



$수도적절한설치맨페이지 개발



맨페이지를 설치하는 데 시간이 걸립니다. 완료될 때까지 기다리세요.





설치 후 셸에서 아래의 man 명령어를 통해 write 시스템 호출에 대한 추가 정보를 볼 수 있습니다.



$남성 2 쓰다

쓰기 명령에 대한 출력 매뉴얼 페이지는 다음과 같습니다. 관련 정보를 읽을 수 있습니다. q를 눌러 설명서를 종료합니다.

이제 Linux 시스템에 Gcc 패키지를 설치하여 C 언어로 작업할 차례입니다. 이를 위해 쉘을 열고 아래의 apt install 명령과 키워드 gcc를 작성하십시오.

$수도적절한설치 gcc

한편, 설치하는 동안 계속하려면 y를 누르고 중지하려면 n을 눌러 설치 작업을 확인하도록 요청할 수 있습니다. 따라서 y 키를 누르고 Enter 키를 누르십시오.

몇 분 안에 시스템에 설치되고 출력의 마지막 줄은 아래 스냅샷과 같습니다.

예:

Linux 배포판에서 쓰기 시스템 호출의 몇 가지 예를 들어 보겠습니다. 따라서 명령줄 셸을 열고 확장자가 dot c인 새 C 파일을 만듭니다. 빠르게 생성하고 열려면 아래 nano 명령을 사용해야 합니다. 이름을 new.c로 지정했습니다.

$나노new.c

아래 창이 열립니다. 이제 이 파일에 첨부된 코드를 작성해야 합니다. 이 코드에서는 먼저 unistd.h 라이브러리를 포함했습니다. 그런 다음 주 함수를 만들고 이 함수 내에서 쓰기 시스템 호출을 만들었습니다. 이 시스템 호출에서 가장 첫 번째 매개변수는 파일 설명자입니다. 이 때 정수 1은 출력 장치 화면을 나타내며 고정되어 있습니다. 따라서 출력이 화면에 표시됩니다. 두 번째 매개변수는 버퍼 데이터를 표시합니다. 당신은 그것에 무엇이든 추가할 수 있습니다. 그리고 마지막 매개변수는 버퍼 매개변수에 주어진 데이터의 개수를 나타냅니다. 카운트 번호로 5를 언급했듯이 버퍼 데이터의 처음 5바이트만 표시하고 남은 바이트는 무시합니다. Ctrl+S 바로 가기 키를 사용하여 이 코드를 저장하고 Ctrl+X 명령을 사용하여 이 파일을 종료합니다.

#포함하다

인트메인()

{쓰다(1아크사 야신5);}

이제 터미널에서 아래 gcc 명령을 시도하여 이 새로 생성된 코드를 파일 이름으로 컴파일하십시오.

$gccnew.c

런타임에 생성된 기본 a.out 파일을 사용하여 이 코드를 확인해 보겠습니다. 따라서 쓰기 시스템 호출의 출력을 확인하려면 아래의.out 명령을 시도하십시오. 현재 디렉토리에서 파일을 선택하려면 ./와 함께 사용해야 합니다.

$./아웃

당신이 볼 수 있는 출력은 카운트 번호 5 때문에 Aqsa라는 단어만 표시했습니다.

코드를 약간 변경해 보겠습니다. 버퍼 데이터 Aqsa Yasin에 총 11바이트가 있기 때문에 카운트 번호를 11로 변경했습니다. 따라서 이번에는 출력에 문자열 데이터 Aqsa Yasin의 전체 바이트가 표시됩니다. Ctrl+S를 사용하여 이 파일을 저장하고 Ctrl+X 바로 가기 키를 사용하여 종료합니다.

새로 설치된 Linux 배포용 gcc 컴파일러를 사용하여 업데이트된 코드를 컴파일해 보겠습니다. new.c와 같은 파일 이름과 함께 동일한 gcc 명령을 시도하십시오.

$gccnew.c

이제 아래와 같이 이전 a.out 명령을 사용하여 동일한 코드의 출력을 표시합니다. 출력은 버퍼의 전체 문자열 Aqsa Yasin을 보여줍니다.

$./아웃

버퍼 데이터에 포함된 총 바이트 수보다 큰 수를 취할 때 코드가 어떻게 작동하는지 봅시다. 그래서 우리는 카운트를 30으로 사용했습니다. 파일을 저장하고 닫습니다.

아래와 같이 gcc 명령을 사용하여 업데이트된 동일한 파일을 컴파일합니다.

$gccnew.c

이제 a.out 명령을 사용하여 파일을 실행하면 아래의 스냅샷 출력에 표시된 대로 출력에 버퍼 데이터와 함께 일부 가비지 값이 표시됩니다.$ ./a.out

동일한 파일에서 아래 코드를 사용하여 파일에 쓰여진 총 바이트 수를 확인할 수도 있습니다.

gcc 명령어로 코드를 컴파일합니다.

$gccnew.c

출력은 a.out 명령을 사용하여 버퍼 데이터와 줄 바꿈을 포함한 총 바이트 수를 보여줍니다.

$./아웃

결론:

이 튜토리얼에서는 C에서 쓰기 시스템 호출을 사용하는 개념을 자세히 설명했습니다. 이 기사를 사용하여 쓰기 시스템 호출의 개념을 이해하기 위해 모든 예제를 시도하십시오.