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 매개변수는 다양한 스레드 속성을 지정하는 데 사용됩니다. 새로 생성된 스레드는 start_rtn 함수의 주소에서 실행을 시작합니다. 이 함수에는 포인터 없는 매개변수 arg가 하나만 있습니다. 둘 이상의 매개변수를 start_rtn 함수에 전달해야 하는 경우 이러한 매개변수를 구조에 입력해야 합니다. 이 구조의 주소는 매개변수 arg가 전달되는 대로 사용됩니다.
Linux에서 멀티스레드 프로그램을 개발하려면 C를 사용하세요. Linux 시스템에서 멀티스레딩은 pthread라는 POSIX 스레드 인터페이스를 따릅니다.
#include
int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void), void *restrict arg);
반환: 정상이면 0, 실패 시 오류 번호
restrict로 수정된 포인터는 포인터가 가리키는 객체에 처음 액세스하는 유일한 방법입니다. 포인터가 첫 번째 포인터를 기반으로 하는 경우에만 개체에 액세스할 수 있습니다. 개체에 대한 액세스는 제한으로 수정된 포인터 식으로 제한됩니다. 제한에 의해 수정된 포인터는 주로 함수 매개변수에 사용되거나, malloc()에 의해 할당된 메모리 공간을 가리킵니다. 제한 데이터 유형은 프로그램의 의미를 변경하지 않습니다. 컴파일러는 제한 수정 포인터가 객체에 액세스하는 유일한 방법이라고 가정하여 특정 유형의 루틴을 더 잘 최적화할 수 있습니다.
첫 번째 매개변수는 스레드 식별자에 대한 포인터입니다.
두 번째 매개변수는 스레드 속성을 설정하는 데 사용됩니다.
세 번째 매개변수는 스레드 실행 함수의 시작 주소입니다.
마지막 매개변수는 함수를 실행하기 위한 매개변수입니다.
그리고, 정적 링크 라이브러리를 호출하기 위해 컴파일할 때 -lpthread 매개변수 추가에 주의하세요. pthread는 Linux 시스템의 기본 라이브러리가 아니기 때문에
================================= ==== ===========================================linux소개 Readlink 기능 실행 경로 가져오기
관련 기능: STAT, LSMLINK
스피드 헤드 파일: #include & lt ; unistd.h & gt;
함수 정의: int readlink(const char *path, char *buf, size_t bufsiz);
함수 설명: readlink() 매개변수 경로를 기호적으로 연결합니다. 매개변수 buf가 가리키는 메모리 공간으로 내용이 전송됩니다. 반환된 내용은 문자열로 NULL로 끝나지 않지만 문자열의 문자 수를 반환합니다.bufsiz 매개변수가 심볼릭 링크의 내용 길이보다 작을 경우 지나치게 긴 내용은 잘립니다.
반환값: 실행이 성공하면 가 가리키는 파일 경로 문자열 실패하면 -1이 반환됩니다. , 오류 코드는 errno에 저장됩니다
오류 코드:
EACCESS EACCESS 파일 검색이 거부되었습니다. 권한이 부족합니다
EINVAL bufsiz 매개변수는 음수입니다
EIO EIO 액세스 오류
ELOOP 열려고 하는 파일에 기록이 있습니다 다중 기호 연결 문제
ENAMETOOLONG 매개변수 경로의 경로 이름이 너무 깁니다
ENOENT path 매개변수로 지정된 파일이 존재하지 않습니다
ENOMEM 코어 메모리가 부족합니다
ENOTDIR 경로 매개변수의 디렉터리가 존재하지만 실제 디렉터리가 아닙니다. Directory
예 1:
#include
#include
#define PATH_MAX 1024
char * 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()) ;
0 반환;
}
================================= =============================================
getpid 프로세스 식별 코드 가져오기
관련 기능: fork, kill, getpid 헤더 파일: # include
함수 설명:
getpid()는 현재 프로세스의 프로세스 식별 코드를 얻는 데 사용됩니다. 많은 프로그램에서는 이 값을 사용하여 문제를 방지합니다. 동일한 임시 파일.
반환값: 현재 프로세스의 프로세스 식별 코드
예:
#include
printf(“pid=%d/n”,getpid()) 동일해야 함*/
=========== ================================================== ===================
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("%c 문자는 %d/n 위치에 있습니다.", c, ptr-string);
else
printf("문자를 찾을 수 없습니다/n");
return 0;
}
运行结果是:문자 r은 위치: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