pthread 기반create,readlink,getpid 등 함수 학습 및 요약

pthread_create 는 UNIX 환경 생 성 스 레 드 함수 입 니 다.     구체 적 인 형식:    #include     int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict attr,void*(*start_rtn)(void*),void *restrict arg);   반환 값:성공 하면 0 을 되 돌려 줍 니 다.그렇지 않 으 면 오류 번 호 를 되 돌려 줍 니 다.  성공 을 되 돌 릴 때 tidp 가 가리 키 는 메모리 셀 은 새로 스 레 드 를 만 드 는 스 레 드 ID 로 설정 되 었 습 니 다.attr 매개 변 수 는 다양한 스 레 드 속성 을 만 드 는 데 사 용 됩 니 다.새로 만 든 스 레 드 startrtn 함수 의 주소 가 실행 되 기 시 작 했 습 니 다.이 함 수 는 포인터 없 는 매개 변수 arg 만 있 습 니 다.start 가 필요 하 다 면.rtn 함수 가 전달 하 는 매개 변 수 는 하나 가 아니 므 로 이 매개 변 수 를 하나의 구조 에 넣 은 다음 에 이 구조의 주 소 를 arg 의 매개 변수 로 전송 해 야 합 니 다.  Liux 에서 C 로 다 중 스 레 드 프로그램 을 개발 하고 Linux 시스템 의 다 중 스 레 드 는 POSIX 스 레 드 인 터 페 이 스 를 따라 pthread 라 고 합 니 다.  #include   int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void), void *restrict arg);     returns:0 if OK,error number on failure 는 restrict 으로 수 정 된 포인터 가 최초 로 포인터 가 가리 키 는 대상 을 액세스 하 는 유일한 방법 으로 두 번 째 포인터 가 첫 번 째 를 기반 으로 할 때 만 대상 을 액세스 할 수 있 습 니 다.대상 에 대한 접근 은 모두 restrict 에 의 해 수 정 된 포인터 표현 식 에 한정 되 어 있 습 니 다.restrict 에서 수식 하 는 지침 은 주로 함수 형 인삼 이나 malloc()에서 분 배 된 메모리 공간 을 가리 키 는 데 사 용 됩 니 다.restrict 데이터 형식 은 프로그램의 의 미 를 바 꾸 지 않 습 니 다.컴 파일 러 가 restrict 수식 지침 을 만 드 는 것 은 액세스 대상 의 유일한 방법 이라는 가설 을 통 해 특정한 유형의 루틴 을 최적화 시 킬 수 있다.  첫 번 째 매개 변 수 는 스 레 드 식별 자 를 가리 키 는 지침 입 니 다.  두 번 째 매개 변 수 는 스 레 드 속성 을 설정 하 는 데 사 용 됩 니 다.  세 번 째 매개 변 수 는 스 레 드 실행 함수 의 시작 주소 입 니 다.  마지막 매개 변 수 는 실행 함수 의 매개 변수 입 니 다.  또한,컴 파일 할 때-lpthread 인 자 를 추가 하여 정적 링크 라 이브 러 리 를 호출 하 는 것 을 주의 하 십시오.pthread 는 Linux 시스템 의 기본 라 이브 러 리 가 아니 기 때 문 입 니 다.  ===============================================================================링크 ux readlink 함수 실행 경로 가 져 오기            관련 함수:stat,lstat,symlink 헤더 파일:\#include정의 함수:int  readlink(const  char *path,  char *buf, size_t  bufsiz);함수 설명:readlink()는 매개 변수 path 의 기 호 를 매개 변수 buf 가 가리 키 는 메모리 공간 에 연결 합 니 다.되 돌아 오 는 내용 은 NULL 로 문자열 을 끝 내 는 것 이 아니 라 문자열 의 문자 수 를 되 돌려 줍 니 다.매개 변수 bufsiz 가 기호 연결 의 내용 길이 보다 작 으 면 너무 긴 내용 이 절 단 됩 니 다.   반환 값:실행 에 성공 하면 기호 연결 이 가리 키 는 파일 경로 문자열 을 전달 합 니 다.실패 반환-1,오류 코드 는 errno 오류 코드 에 저 장 됩 니 다.               EACCESS                  파일 을 가 져 오 는 중 거부 되 었 습 니 다.권한 이 부족 합 니 다.               EINVAL                    매개 변수 bufsiz 는 마이너스 입 니 다.               EIO                         O 액세스 오류               ELOOP                     열 려 는 파일 에 너무 많은 기호 연결 문제 가 있 습 니 다.               ENAMETOOLONG       인자 path 의 경로 이름 이 너무 깁 니 다.               ENOENT                   인자 path 에서 지정 한 파일 이 존재 하지 않 습 니 다.               ENOMEM                   핵심 메모리 부족               ENOTDIR                   매개 변수 path 경로 에 있 는 디 렉 터 리 가 존재 하지만 실제 디 렉 터 리 가 아 닙 니 다.예 1:\#include\#include\#define PATHMAX 1024char * get_exe_path(){    static char buf[PATH_MAX];    int i;    int rslt = readlink("/proc/self/exe", buf, PATH_MAX);    if (rslt < 0 || rslt >= PATH_MAX)    {        return NULL;    }    buf[rslt] = '/0';    for (i = rslt; i >= 0; i--)    {        printf("buf[%d] %c/n", i, buf);        if (buf == '/')        {            buf[i + 1] = '/0';            break;        }    }    return buf;}int main(int argc, char ** argv){    printf("%s/n", get_exe_path());    return 0;}  ===============================================================================  getpid 프로 세 스 식별 코드 가 져 오기     관련 함수:fork,kill,getpid 헤더 파일:\#include  정의 함수:pidt getpid(void);    함수 설명:  getpid()는 현재 프로 세 스 의 프로 세 스 식별 코드 를 가 져 오 는 데 사 용 됩 니 다.많은 프로그램 들 이 가 져 온 이 값 을 이용 하여 임시 파일 을 만 들 고 임시 파일 과 같은 문 제 를 피 합 니 다.    반환 값:현재 프로 세 스 의 프로 세 스 식별 코드  범례:  #include    main()    {    printf(“pid=%d/n”,getpid());    }    실행:  pid=1494/*매번 실행 결과 가 다 릅 니 다*/  ===============================================================================     strrchr()함수     정의 와 용법              strrchr()함수 의 역할 은 문자열 이 다른 문자열 에서 마지막 으로 나타 나 는 위 치 를 찾 고 문자열 의 이 위치 에서 문자열 이 끝 날 때 까지 모든 문 자 를 되 돌려 주 는 것 입 니 다.지정 한 문 자 를 찾 지 못 하면 함 수 는 NULL 로 돌아 갑 니 다.  문법  char *strrchr(char *str, char c);  예시  #include     #include     int main(void)      char string[16];    char *ptr, c = 'r';    strcpy(string, "This is a string");    ptr = strrchr(string, c);    if (ptr)             printf("The character %c is at position: %d/n", c, ptr-string);    else             printf("The character was not found/n");    return 0;    }    실행 결 과 는:The character is at position:12  ===============================================================================  strstr()함수 용법   c++함수 원형:const char*strstr(const char*str1,const char*str2);char * strstr ( char * str1, const char * str2 );
C 함수 원형:char*strstr(const char*,const char*);a 문자열 에서 b 문자열 이 있 는 지 확인 하고 b 문자열 을 처음 발견 한 곳 에서 a 문자열 을 되 돌려 줍 니 다.없 으 면 출력 null 예:char st[]="abc 1234 xyz";printf("%s",strstr(st,"34") );
출력:34 xyz

좋은 웹페이지 즐겨찾기