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