1
たとえば、thread_mutexattr_init(& myAttr)のようにエラーを返す可能性のある関数を使用する場合、この関数がエラーを返した場合、errnoにエラー番号を自動的に設定するか、errnoこの関数の復帰に?Cでのerrnoの理解
たとえば、何が正しいですか?
if((errno = pthread_mutexattr_init(&myAttr)) != 0){
if(errno == EBUSY){
perror("some error message because of EBUSY");
}else{
perror("another error message");
}
またはこの:
はif(pthread_mutexattr_init(&myAttr) < 0){
if(errno == EBUSY){
perror("some error message because of EBUSY");
}else{
perror("another error message");
}
}
POSIX標準では、pthread関数が 'errno'の設定を禁止されているとは言えませんが、[' errno'](http://pubs.opengroup.org/onlinepubs/9699919799/functions/errno.html )言う:errno' 'の_The値のみが、明示的に設定することが記載されている関数の呼び出し後に定義されなければならない... _と[' '](http://pubs.opengroup.org/onlinepubs/9699919799 /basedefs/errno.h.html)言う:_The '' ヘッダは以下に示すよう除くタイプ 'int'、別個の正の値()と定数式を整数に展開しなければならない以下のマクロを定義しなければならない... _ –
を('のpthread_mutexattr_init以来)が '' errno'を設定するために定義されていない、呼び出し後に 'errno'をチェックする)(許容賢明ではありません。関数は負の数を返すことはありません。成功すれば0を返し、失敗した場合は正の整数を返します。 –