minishell 허용함수 정리

이민규·2023년 8월 21일
0

42seoul

목록 보기
21/24

readline

#include <stdio.h>
#include <readline/readline.h>
#include <readline/history.h>

 char *readline (const char *prompt);

readline 함수는 터미널에서 한 줄을 읽고 반환합니다 이때 prompt를 프롬프트 앞쪽에 표시해줍니다 반환되는 문자열은 malloc으로 할당되었으므로 사용 후 free해주어야 합니다 반환되는 문자열은 개행이 포함되지 않은상태로 반환됩니다

const char *prompt : 프롬프트 창에 표시하고 싶은 메시지
반환값 : 읽어온 메시지 (개행 미포함) 줄이 비어있으면 NULL이 반환합니다 비어있지 않은 줄과 함께 EOF를 읽으면 줄 바꿈으로 처리됩니다

readline man

rl_clear_history

void rl_clear_history (void)

히스토리 라이브러리의 clear_history() 함수와 동일한 방식으로 모든 항목을 삭제하여 히스토리 목록을 지웁니다. 이 함수는 clear_history와 다른 점은 Readline이 히스토리 목록에 저장하는 개인 데이터를 해제한다는 점입니다.
👀 clear_history : 모든 항목을 삭제하여 히스토리 리스트를 지웁니다.
rl 함수들 관련 GNU메뉴얼

rl_on_new_line

int rl_on_new_line (void)

일반적으로 줄 바꿈 출력 후 새 (빈) 줄로 이동했음을 업데이트 함수에 알립니다.

rl_replace_line

void rl_replace_line (const char *text, int clear_undo)

rl_line_buffer의 내용을 텍스트로 바꿉니다. 가능하면 점과 마크는 보존됩니다. clear_undo가 0이 아닌 경우, 현재 줄과 연관된 실행 취소 목록이 지워집니다.

rl_redisplay

 void rl_redisplay (void)

화면에 표시되는 내용을 변경하여 rl_line_buffer의 현재 내용을 반영합니다.

add_history

void add_history (const char *string)

히스토리 리스트의 끝에 문자열을 배치합니다. 연관된 데이터 필드(있는 경우)는 NULL로 설정됩니다.
add_history man

wait3 / 4

pid_t wait3(int *status, int options, struct rusage *rusage);
pid_t wait4(pid_t pid, int *status, int options, struct rusage *rusage);

설명
이 함수는 더 이상 사용되지 않습니다. 새 프로그램에서는 waitpid(2) 또는 waitid(2)를 사용하십시오.

wait3() 및 wait4() 시스템 호출은 waitpid(2)와 유사하지만, rusage가 가리키는 구조체의 자식에 대한 리소스 사용 정보를 추가로 반환합니다.

wait3(status, options, rusage);
는 다음과 같습니다:
waitpid(-1, status, options);

wait4(pid, status, options, rusage);
는 다음과 같습니다:
waitpid(pid, status, options);

즉, wait3()는 모든 자식을 기다리는 반면 wait4()는 대기할 특정 자식을 선택하는 데 사용할 수 있습니다. 자세한 내용은 wait(2)를 참고하세요.
rusage가 NULL이 아니라면, 그것이 가리키는 구조체 rusage는 자식에 대한 계정 정보로 채워집니다. 자세한 내용은 getrusage(2)를 참조하세요.

반환 값
waitpid(2)와 동일합니다.

wait 3/4 man

signal

#include <signal.h>

 typedef void (*sighandler_t)(int);

 sighandler_t signal(int signum, sighandler_t handler);

🔔경고: signal()의 동작은 UNIX 버전에 따라 다양하며, 또한 리눅스의 다른 버전 간에도 역사적으로 다양했습니다. 그 사용을 피하십시오: 대신 sigaction(2)을 사용하십시오. 이식성 아래를 참조하십시오.

signal()은 신호 signum의 처리 방식을 handler로 설정합니다. handler는 SIG_IGN, SIG_DFL 또는 프로그래머가 정의한 함수(신호 처리기)의 주소일 수 있습니다.

신호 signum이 프로세스에 전달되면 다음 중 하나가 발생합니다.

처리 방식이 SIG_IGN으로 설정되면 신호는 무시됩니다.
처리 방식이 SIG_DFL로 설정되면 신호와 관련된 기본 동작이 발생합니다 (signal(7) 참조).
처리 방식이 함수로 설정되면 먼저 처리 방식이 SIG_DFL로 재설정되거나 신호가 차단됩니다 (아래의 이식성 참조), 그리고 그런 다음 handler가 signum 인수와 함께 호출됩니다. 처리기의 호출로 인해 신호가 차단되었다면 처리기에서 반환 후에 신호의 차단이 해제됩니다.
신호 SIGKILL 및 SIGSTOP은 잡히거나 무시될 수 없습니다.

반환 값
signal()은 신호 처리기의 이전 값을 반환합니다. 실패 시 SIG_ERR을 반환하고 오류를 나타내기 위해 errno가 설정됩니다.

signal man

sigaction

 #include <signal.h>

       int sigaction(int signum,
                     const struct sigaction *_Nullable restrict act,
                     struct sigaction *_Nullable restrict oldact);

sigaction() 시스템 호출은 프로세스가 특정 신호를 수신할 때 취해지는 동작을 변경하는 데 사용됩니다. (신호에 대한 개요는 signal(7)을 참조하십시오.)

signum은 신호를 지정하며, SIGKILL 및 SIGSTOP을 제외한 모든 유효한 신호일 수 있습니다.

act가 NULL이 아닌 경우, 신호 signum에 대한 새로운 동작이 act에서 설치됩니다. oldact가 NULL이 아닌 경우 이전 동작은 oldact에 저장됩니다.

sigaction 구조체는 다음과 같이 정의됩니다:

struct sigaction {
    void     (*sa_handler)(int);
    void     (*sa_sigaction)(int, siginfo_t *, void *);
    sigset_t   sa_mask;
    int        sa_flags;
    void     (*sa_restorer)(void);
};

sa_handler: 일반적인 시그널 처리 동작으로 함수 포인터를 받습니다. 이 함수 포인터는 시그널이 발생했을 때 호출되는 핸들러 함수를 가리킵니다. sa_sigaction과는 동시에 사용되지 않습니다.

sa_sigaction: 시그널 처리 동작으로 시그널 핸들러 함수를 가리키는 함수 포인터입니다. 이 함수 포인터는 sa_flags에 SA_SIGINFO 플래그가 설정되어 있는 경우, 시그널 핸들러 함수 대신 호출됩니다. 또한 해당 시그널의 발생 원인과 관련된 추가 정보를 전달하는 데 사용됩니다.

sa_mask: 시그널 핸들러 함수가 실행 중일 때 블록할 시그널의 집합을 정의하는 sigset_t 타입의 변수입니다. 이를 통해 시그널 핸들러 함수 실행 중에 다른 시그널이 중단되지 않도록 제어할 수 있습니다.

sa_flags: 시그널 처리 동작의 옵션을 지정하는 플래그입니다. 여러 옵션을 비트별 OR 연산으로 결합할 수 있습니다. 예를 들어 SA_SIGINFO 플래그는 시그널 핸들러 함수에 더 많은 정보를 제공하도록 합니다.

sa_restorer: 일부 아키텍처에서만 사용되며, 미래의 운영체제 호환성을 위해 제공되는 함수 포인터입니다. 일반적으로 애플리케이션에서 사용되지 않습니다.

const struct sigaction *_Nullable restrict act : 특정 시그널이 들어왔을때 사용할 구조체

struct sigaction *_Nullable restrict oldact : 이전에 사용하였던 act를 저장해둔다

반환 값 : 성공적으로 동작 하였으면 0을 반환 오류 발생 시 -1을 반환합니다

sigaction man

sigemptyset

#include <signal.h>

int sigemptyset(sigset_t *set);

sigemptyset() 함수는 지정된 시그널 집합을 초기화합니다. 이 때, POSIX.1-2008에 정의된 모든 시그널이 제외됩니다.

성공적으로 완료되면, sigemptyset() 함수는 0을 반환합니다. 그렇지 않을 경우, -1을 반환하고 오류를 나타내기 위해 errno를 설정합니다.

sigemptyset man

sigaddset

#include <signal.h>

int sigaddset(sigset_t *set, int signo);

sigaddset() 함수는 지정된 signo로 특정한 개별 시그널을 set에 지정된 시그널 집합에 추가합니다.

🔔 응용 프로그램은 sigset_t 유형의 개체마다 어떤 다른 사용도 이루어지기 전에 최소한 한 번은 sigemptyset() 또는 sigfillset() 중 하나를 호출해야 합니다. 만약 이러한 방식으로 초기화되지 않은 개체가 사용되지만, 그럼에도 불구하고 pthread_sigmask(), sigaction(), sigaddset(), sigdelset(), sigismember(), sigpending(), sigprocmask(), sigsuspend(), sigtimedwait(), sigwait(), 또는 sigwaitinfo() 중 하나의 인수로 제공된다면 결과는 정의되지 않습니다.

반환값 : 성공적으로 동작하였을 시 0반환 오류발생 시 -1반환

sigaddset man

getcwd

#include <unistd.h>

char *getcwd(char buf[.size], size_t size);

getcwd() 함수는 현재 작업 디렉토리의 절대 경로명을 길이가 size인 배열 buf로 복사합니다. 만약 현재 작업 디렉토리의 절대 경로명 길이가 종료 널 바이트를 포함하여 size 바이트를 초과하면, NULL이 반환되고 errno가 ERANGE로 설정됩니다.

char buf[.size] : 현재 작업 디렉토리의 절대 경로명을 저장할 배열

size_t size : 널문자를 포함한 디렉토리의 절대경로명 길이

반환 값 : 성공 적으로 동작 시 현재 작업 디렉토리의 경로명을 포함하는 문자열 반환 실패 시 NULL을 반환 및 buf가 가리키는 배열의 내용은 정의되지 않습니다

getcwd man

chdir

#include <unistd.h>

int chdir(const char *path);

chdir()는 호출하는 프로세스의 현재 작업 디렉토리를 path에 지정된 디렉토리로 변경합니다

const char *path : 변경하고싶은 작업 디렉토리

반환값 : 성공적으로 동작 시 0을 반환 오류 발생 시 -1 반환

chdir man

stat

#include <sys/stat.h>

       int stat(const char *restrict pathname, 
       			struct stat *restrict statbuf);
             
       int lstat(const char *restrict pathname,
                struct stat *restrict statbuf);
                
       int fstat(int fd, struct stat *statbuf);
            
struct stat {
           dev_t      st_dev;      /* 파일이 위치한 장치의 ID */
           ino_t      st_ino;      /* 아이노드 번호 */
           mode_t     st_mode;     /* 파일 유형과 모드 */
           nlink_t    st_nlink;    /* 하드 링크 수 */
           uid_t      st_uid;      /* 소유자의 사용자 ID */
           gid_t      st_gid;      /* 소유자의 그룹 ID */
           dev_t      st_rdev;     /* 특수 파일인 경우의 장치 ID */
           off_t      st_size;     /* 총 크기, 바이트 단위 */
           blksize_t  st_blksize;  /* 파일 시스템 I/O에 사용되는 블록 크기 */
           blkcnt_t   st_blocks;   /* 할당된 512B 블록 수 */

           /* POSIX.1-2008 버전부터 나노초 단위 타임스탬프 필드를 지원합니다.
              POSIX.1-2008 이전 버전에 대한 자세한 내용은 VERSIONS를 참조하세요. */

           struct timespec  st_atim;  /* 마지막 접근 시간 */
           struct timespec  st_mtim;  /* 마지막 수정 시간 */
           struct timespec  st_ctim;  /* 마지막 상태 변경 시간 */

       #define st_atime  st_atim.tv_sec  /* 하위 호환성 */
       #define st_mtime  st_mtim.tv_sec
       #define st_ctime  st_ctim.tv_sec
       };

stat()은 pathname이 가리키는 파일에 대한 정보를 검색합니다.
lstat()는 stat()와 동일하지만 pathname이 심볼릭 링크인 경우 링크 자체에 대한 정보를 반환하며 링크가 가리키는 파일에 대한 정보가 아닙니다.
fstat()은 stat()과 동일하지만 정보를 검색할 파일이 파일 디스크립터 fd로 지정됩니다.

const char *restrict pathname : 검색 하고싶은 파일의 경로 및 이름

struct stat *restrict statbuf : 결과를 저장할 statbuf 지정

반환 값 : 성공적으로 동작 하였을 시 0을 반환 오류가 발생하면 -1 반환

👀stat 함수는 statbuf로 지정된 버퍼에 파일에 대한 정보를 반환합니다. 파일 자체에 대한 권한이 필요하지 않지만 경로 이름에 해당하는 모든 디렉토리에서 실행(검색) 권한이 필요합니다.

pathname에 제공된 경로 이름이 상대 경로이면 해당 디렉토리 디스크립터 dirfd가 가리키는 디렉토리에 상대적으로 해석됩니다(stat() 및 lstat()의 경우 호출 프로세스의 현재 작업 디렉토리에 상대적으로 해석되는 것과 다릅니다).

pathname이 상대적이고 dirfd가 특별한 값 AT_FDCWD인 경우 pathname은 호출 프로세스의 현재 작업 디렉토리에 상대적으로 해석됩니다(stat() 및 lstat()와 같이).

pathname이 절대 경로이면 dirfd는 무시됩니다.

stat man

opendir

#include <sys/types.h>
#include <dirent.h>
       
DIR *opendir(const char *name);

opendir() 함수는 디렉토리 이름에 해당하는 디렉토리 스트림을 열고, 디렉토리 스트림에 대한 포인터를 반환합니다. 스트림은 디렉토리의 첫 번째 항목에서 위치합니다.

const char * name : 열고 싶은 디렉토리의 이름

반환 값 : 성공적으로 동작 하였을 시 디렉토리 스트림에 대한 포인터 반환 오류 발생 시 NULL반환

readdir

#include <dirent.h>

struct dirent *readdir(DIR *dirp);

struct dirent {
    ino_t          d_ino;       /* 아이노드 번호 */
    off_t          d_off;       /* 오프셋이 아님; 아래 내용 참조 */
    unsigned short d_reclen;    /* 이 레코드의 길이 */
    unsigned char  d_type;      /* 파일 형식; 모든 파일 시스템 유형에서 지원되지 않음 */
    char           d_name[256]; /* 널 종료된 파일 이름 */
};

readdir() 함수는 dirp에 의해 가리키는 디렉토리 스트림에서 다음 디렉토리 항목을 나타내는 dirent 구조체에 대한 포인터를 반환합니다. 디렉토리 스트림의 끝에 도달하거나 오류가 발생한 경우 NULL을 반환합니다.

DIR *dirp : 다음 디렉토리 항목을 가리키고 싶은 포인터

반환 값 : 성공적으로 동작 시 dirent구조체에 대한 포인터 반환 (이 구조체는 정적으로 할당될 수 있으며 free(3)를 시도해서는 안됩니다) 디렉토리 스트림의 끝에 도달한 경우나 오류가 발생한 경우 NULL이 반환됩니다

🔔 스트림의 끝과 오류를 구별하기 위해, readdir() 호출 전에 errno를 0으로 설정하고 NULL이 반환된 경우 errno의 값을 확인하십시오.

👀 POSIX.1에서 강제하는 dirent 구조체의 유일한 필드는 d_name과 d_ino입니다. 다른 필드는 표준화되지 않았으며 모든 시스템에서 사용되지 않을 수 있습니다.

readdir man

closedir

#include <sys/types.h>
#include <dirent.h>

int closedir(DIR *dirp);

closedir() 함수는 dirp와 관련된 디렉터리 스트림을 닫습니다.
closedir() 함수가 성공적으로 호출되면 dirp와 관련된 기본 파일 디스크립터도 닫힙니다.
이 호출 이후에는 디렉터리 스트림 기술자 dirp를 사용할 수 없습니다.

DIR *dirp : 종료하고 싶은 디렉터리 스트림

반환 값 : 성공적으로 동작 시 0을 반환 오류 발생 시 -1을 반환

closedir man

isatty

#include <unistd.h>

int isatty(int fd);

isatty() 함수는 fd가 터미널을 참조하는 열린 파일 디스크립터인지 테스트합니다.

int fd : 테스트 하고 싶은 fd

반환 값 : fd가 터미널을 참조하는 열린 디스크립터일 경우 1을 반환 아닐 시 0을 반환

isatty man

ttyname

#include <unistd.h>

char *ttyname(int fd);

함수 ttyname()은 파일 디스크립터 fd에 열려 있는 터미널 장치의 이름을 가리키는 포인터를 반환하며 ('\0'로 종료됨), 오류 시에는 NULL을 반환합니다 (예: fd가 터미널에 연결되지 않은 경우). 반환 값은 정적 데이터를 가리킬 수 있으며, 다음 호출에 의해 덮어쓰일 수 있습니다.

반환 값 : 성공적으로 동작 시 경로 이름을 가리키는 포인터를 반환 오류시에는 NULL을 반환

ttyname man

ttyslot

#include <unistd.h>

int ttyslot(void);

고전 함수인 ttyslot()은 현재 사용자의 엔트리 인덱스를 어떤 파일에서 가져오는지 반환합니다.

ttyslot() 함수는 호출하는 프로세스의 제어 터미널의 인덱스를 /etc/ttys 파일에서 반환하며, 이것은 (보통) /etc/utmp 파일의 현재 사용자 엔트리에 대한 인덱스와 동일합니다. BSD는 여전히 /etc/ttys 파일을 갖고 있지만, 시스템 V와 유사한 시스템은 그렇지 않으므로 이를 참조할 수 없습니다. 따라서 이러한 시스템에서는 ttyslot() 함수가 현재 사용자의 사용자 계정 데이터베이스 내 인덱스를 반환한다고 문서에 기술되어 있습니다.

성공적으로 동작 시 슬롯번호를 반환합니다 오류일 경우(예: 파일 디스크립터 0, 1 또는 2 중 어느 하나도 이 데이터베이스에 연결된 터미널과 관련되어 있지 않은 경우) UNIX V6, V7 및 BSD와 유사한 시스템에서는 0을 반환하지만, 시스템 V와 유사한 시스템에서는 -1을 반환합니다.

ttyslot man

ioctl

#include <sys/ioctl.h>

int ioctl(int fd, unsigned long request, ...);

ioctl() 시스템 호출은 특수 파일의 기반이 되는 장치 매개변수를 조작합니다. 특히 문자 특수 파일 (예: 터미널)의 많은 운영 특성을 ioctl() 요청으로 제어할 수 있습니다. 인수 fd는 열린 파일 디스크립터여야 합니다.

int fd : ioctl함수가 적용될 대상 파일에 대한 파일 디스크립터

unsigned long request : ioctl를 동작하기 위한 요청 코드 무슨 동작을 진행할지 정해준다

반환 값 : 성공적으로 동작 시 0을 반환 일부 요청은 반환 값을 출력 매개변수로 사용하고 성공 시 음수가 아닌 값을 반환합니다 오류 발생 시 -1을 반환

ioctl man

getenv

#include <stdlib.h>

char *getenv(const char *name);

getenv() 함수는 환경 변수 이름을 찾기 위해 환경 리스트를 검색하고, 해당 값 문자열에 대한 포인터를 반환합니다.

반환 값 : 환경 변수의 값을 가리키는 포인터를 반환하거나 일치하는 항목이 없는 경우 NULL을 반환합니다

tcsetattr

 #include <termios.h>

int tcsetattr(int fildes, int optional_actions,
			const struct termios *termios_p);

tcsetattr() 함수는 열린 파일 디스크립터 fildes (터미널과 관련된 열린 파일 디스크립터)로 참조되는 터미널의 매개변수를 다음과 같이 termios_p로 참조되는 termios 구조체와 관련하여 설정합니다

int fildes : 터미널과 관련된 열린 파일 디스크립터
int optional_actions : 변경 사항이 적용되는 타이밍을 지정하는 값

  • TCSANOW : 변경 사항을 즉시 적용합니다
  • TCSADRAIN : 출력에 영향을 미치는 매개변수를 변경한 후 모든 출력이 전송된 후에 변경을 적용합니다
  • TCSAFLUSH : 출력에 영향을 미치는 매개변수를 변경한 후 모든 출력이 전송된 후 변경을 적용하며 현재까지 수신된 모든 입력을 폐기합니다

const struct termios *termios_p: 변경할 터미널 매개변수를 포함하는 termios 구조체에 대한 포인터입니다.

반환 값 : 성공적으로 동작하면 0을 반환 그렇지 않을 시 -1을 반환

👀 tcsetattr() 함수는 요청된 동작 중 일부를 수행할 수 있으면 성공적으로 반환됩니다.

tcsetattr man

tcgetattr

#include <termios.h>

int tcgetattr(int fildes, struct termios *termios_p);

tcgetattr() 함수는 열린 파일 디스크립터 fildes로 참조되는 터미널과 관련된 매개변수를 가져와서 termios_p로 참조되는 termios 구조체에 저장합니다. fildes 인수는 터미널과 관련된 열린 파일 디스크립터입니다.

int fildes : 터미널과 관련된 열린 파일디스크립터

struct termios *termios_p : tcgetattr함수로 가져온 정보를 저장할 구조체

반환 값 : 성공적으로 동작 시 0을 반환 오류 발생 시 -1을 반환

tcgetattr man

tgetent

#include <curses.h>
#include <term.h>

int tgetent(char *bp, const char *name);

tgetent함수는 termcap 데이터베이스에서 지정된 이름의 항목을 로드하는 역할을 합니다

char *bp : 버퍼 포인터 이 매개변수는 무시됩니다 (과거 호환성을 위해 남겨둠)

const char *name : 로드할 항목의 이름

반환 값 : 명시적으로 표시되지 않은 경우 정수를 반환하는 루틴은 실패 시 ERR을 반환하고 성공적으로 완료 시 OK를 반환합니다 포인터를 반환하는 루틴은 오류 시 NULL을 반환합니다

t시리즈 man

tgetflag

#include <curses.h>
#include <term.h>

int tgetflag(char *id);

tgetflag 루틴은 id에 대한 boolean 항목을 가져옵니다. 사용할 수 없으면 0을 가져옵니다. boolean 값은 해당 항목이 지원되는지 여부를 나타내며 예를들어 화면 스크롤 지원 여부등을 확인하는 데 사용될 수 있습니다

char *id : boolean항목을 가져을 이름

반환 값 : 해당 boolean능력이 지원되는 경우 1을 반환 지원되지 않거나 오류가 있는 경우 0을 반환

tgetnum

#include <curses.h>
#include <term.h>

int tgetnum(char *id);

tgetnum 루틴은 id에 대한 숫자 항목을 가져옵니다. 사용할 수 없으면 -1을 가져옵니다. 숫자 항목은 터미널의 속성에 대한 정보를 담고 있으며 터미널의 열 수나 행 수 등을 확인하는 데 사용될 수 있습니다

char *id : 숫자 항목을 가져을 이름

반환 값 : 해당 능력이 지원되는 경우 능력의 숫자 값 반환 지원되지 않거나 오류가 있는 경우 -1을 반환

tgetstr

#include <curses.h>
#include <term.h>

char *tgetstr(char *id, char **area);

tgetstr 루틴은 id에 해당하는 문자열 항목을 반환하거나 사용할 수 없으면 0을 반환합니다. 반환된 문자열을 출력하기 위해 tputs를 사용하십시오. 반환 값은 또한 area가 가리키는 버퍼로 복사되며, 이 값의 널 종료 뒤를 가리키도록 area 값이 업데이트됩니다. 문자열 능력 값은 터미널의 동작을 제어하는데 사용되며, 예를 들어 커서를 숨기는 기능이나 화면을 지우는 기능을 제어하는 데 사용될 수 있습니다

char *id : 가져올 문자열 능력 항목의 이름

char **area : 문자열을 저장할 버퍼 포인터

반환 값 : 해당 능력이 지원되는 경우 해당 능력의 문자열 값 지원되지 않거나 오류가 있는 경우 NULL을 반환

tgoto

char *tgoto(const char *cap, int col, int row);

tgoto 루틴은 지정된 기능을 매개변수로 인스턴스화합니다. 이 루틴의 출력은 tputs에 전달되어야 합니다.

const char *cap : 템플릿 문자열의 능력을 나타내는 문자열 입니다 이 능력은 터미널 제어 시퀀스의 템플릿을 가리키며 %i 와 %p1%d와 같은 형식지정자를 포함할 수 있습니다

int col : 커서의 열 위치를 나타내는 정수입니다 이 값을 템플릿 문자열의 %i 형식 지정자에 대응 시킵니다

int row : 커서의 행 위치를 나타내는 정수입니다 이 값을 템플릿 문자열의 %p1%d형식 지정자에 대응 시킵니다

tputs

int tputs(const char *str, int affcnt, int (*putc)(int));

tputs 루틴은 문자열 str에 패딩 정보를 적용하고 출력합니다. str은 terminfo 문자열 변수 또는 tparm, tgetstr 또는 tgoto의 반환 값이어야 합니다. affcnt는 영향을 받는 라인 수이며, 해당되지 않는 경우 1입니다. putc는 문자를 한 번에 전달하는 putchar와 유사한 루틴입니다.

const char *str : 출력할 터미널 제어 시퀀스가 포함된 문자열

int affcnt : 영향을 미치는 행의 수를 나타내는 정수 일반적으로 1으로 설정함

int (*putc)(int) : 출력 함수 포인터 문자를 출력하는 함수의 포인터로 putchar와 같은 함수를 전달할 수 있습니다

profile
프로그래머 희망자(휴직중)

0개의 댓글