tcsetattr 예제

augusztus 2, 2019 11:41 de. Közzétette cccccccccccccc

제공된 예제는 소스 중 하나에서 입력을 사용할 수 있게 될 때까지 무기한 으로 차단됩니다. 입력에 시간 지정해야 하는 경우 선택 호출을 교체하기만 하면 stty의 -F 옵션은 다른 프로그램이 터미널에서 수행하는 작업을 엿볼 수 있습니다. 셸에서 tty를 실행하면 해당 셸의 터미널 장치(일반적으로 적어도 Linux에서 양식 /dev/pts/N)에 대한 경로를 인쇄합니다. 이제 다른 셸에서 stty -a -F /dev/pts/N을 실행하여 첫 번째 셸의 터미널이 어떻게 구성되는지 확인할 수 있습니다. 그런 다음 첫 번째 셸에서 프로그램을 실행하고 셸 2에서 stty incant을 반복하여 설정되는 설정을 확인할 수 있습니다. 예를 들어 stty -F /dev /pts/10을 지금 실행하는 경우 (해당 pty를 통해 그놈 터미널과 이야기하는 배쉬가있는 동안) 직렬 인터페이스의 구성에 대한 모든 정보는 구조체 종점 데이터 형식의 인스턴스에 저장됩니다. tcgetattr()에는 미리 할당된 구조체 용어에 대한 포인터가 필요합니다. tcsetattr()에는 미리 할당되고 초기화된 구조형 종점 종사에 대한 포인터가 필요합니다. tcsetattr() 함수는 요청된 작업 중 일부를 수행할 수 없는 경우에도 요청된 작업을 수행할 수 있는 경우 성공적으로 반환됩니다. 구현이 지원하는 모든 특성을 요청대로 설정하고 구현에서 지원되지 않는 모든 특성을 변경되지 않은 상태로 두어야 합니다.

요청의 일부를 존중할 수 없는 경우 -1을 반환하고 errno를 [EINVAL]으로 설정합니다. 입력 및 출력 baud 비율이 다르고 지원되지 않는 조합인 경우 baud 비율은 변경되지 않습니다. tcgetattr()에 대한 후속 호출은 터미널 장치의 실제 상태를 반환해야 합니다(이전 tcsetattr() 호출에서 변경된 내용과 변경되지 않은 변경 사항을 모두 반영). tcsetattr() 함수는 어떠한 상황에서도 용어 구조에 있는 값을 변경하지 않습니다. 이 함수는 프로세스의 현재 제어 터미널의 장치 이름을 문자열로 반환합니다(예: “/dev/tty01”). 이는 제어 단말 연결이 나중에 제거되더라도 통신하기 위해 해당 단말 장치를 직접 열려고 하는 프로그램에 유용합니다(예: 프로세스 포크/임원이 데몬 프로세스가 되기 때문). *s는 NULL이거나 적어도 L_ctermid 바이트의 문자 배열을 가리킬 수 있습니다(상수는 stdio.h에서도 정의됩니다). *s가 NULL이면 일부 내부 정적 char 배열이 사용되고 그렇지 않으면 제공된 배열이 사용됩니다. 두 경우 모두 char 배열의 첫 번째 요소에 대한 포인터가 반환됩니다termios_p에 의해 가리키는 termios 구조의 값이 fildes에 대한 tcgetattr()에 대한 호출의 결과에서 파생되지 않은 경우 tcsetattr()의 효과가 정의되지 않습니다. 응용 프로그램은 tcgetattr() 및 tcsetattr()에 대한 호출 사이에 IEEE Std 1003.1-2001의 이 볼륨에 의해 정의된 필드와 플래그만 수정해야 하며 다른 모든 필드와 플래그는 수정되지 않은 상태로 두어야 합니다. IEEE Std 1003.1-2001의 이 볼륨에 의해 정의된 어떠한 작업도 tcsetattr() 호출 또는 이 터미널 장치와 연결된 시스템의 마지막 파일 설명자의 닫기 이외에는 이 IEEE Std 볼륨에 의해 정의된 터미널 속성 중 어느 한 값도 발생하지 않습니다.

1003.1-2001.

Kategória: Egyéb kategória

Írta: Gabor