pthread_mutex_init(&ctx->usb_devs_lock, NULL); 이런 코드가 있어서 무엇인지 알고 싶어 ctag를 쳤는데요
extern int pthread_mutex_init (pthread_mutex_t *__mutex,
__const pthread_mutexattr_t *__mutexattr)
__THROW __nonnull ((1));
이렇게 함수 선언(맞죠?)만 나오고 정의부가 아무리 쳐도 나오질 않는데요
/* The nonull function attribute allows to mark pointer parameters which
must not be NULL. */
#if __GNUC_PREREQ (3,3)
# define __nonnull(params) __attribute__ ((__nonnull__ params))
#else
# define __nonnull(params)
#endif
여기서 define __nonull(params) 뒤에 __attribute__((__nonull__params))를 대체 어떻게 해석을 해야할 까요?
부모프로세스로부터 생성된 A, B 두개의 프로세스가 소켓방식(UDS)으로 데이터를 주고 받는데요.
중간에 사용자가 명령(전송 버튼을 클릭하는 등의 행위)을 주어야지만 데이터를 전달하도록 만드려고 합니다.
부모로부터 생성된 A프로세스는 funcA()함수에서 서버역할을 설정합니다. B프로세스는 funcB()에서 클라이언트 역할을 설정합니다.(소켓방식 지정하고, UDP방식이므로 클라이언트가 서버한테 메세지보내서 서버가 클라이언트 주소 인식하고 등의 설정)
그후 서버 프로세스가 사용자의 입력을 받으면 sendto()함수를 사용해서 클라이언트에게 메세지를 전송하려고 하는데요.
제 짧은 지식으로는 A프로세스를 대기 상태로 전환시키고, 필요할 때 다시 작동시키고 하는 그런 시스템콜 같은 건 없는 것 같은데요
그래서 생각한게 A프로세스를 while문 안에 가두어 두고 계속 어떤 변수를 체크하는 if문을 넣는 것입니다. 그래서 변수가 조건에 맞으면 sendto()함수를 호출하는 것이죠.
그러니까..