
以下のプログラムをLinuxで実行するとpthread_create関数の戻り値が『1』となり、errno変数には『4』が入ってしまいます。(どちらにも『0』が入っててほしい)
何がやりたいのかというと、子スレッドのプライオリティを優先指定にして、子スレッドが生成されることを確認したいだけなのですが。。。
(下のプログラムじゃきっと本質的には確認できたことにはならないとおもいますが。。。)
何故pthread_create関数の戻り値が『1』となり、errno変数には『4』が入ってしまうかわかる方、どなたかご教授願えませんでしょうか?
-------------------------------ここから-------------------------------
#include <pthread.h>
#include <errno.h>
void *test2( void * );
int main ( int argc, char **argv )
{
int iThCreateRes=0;
pthread_attr_t t_attr;
int bRet=0;
pthread_t szThreadHandle;
errno = 0;
pthread_attr_init( &t_attr );
pthread_attr_setdetachstate( &t_attr, PTHREAD_CREATE_JOINABLE );
pthread_attr_setschedpolicy( &t_attr,SCHED_RR );
pthread_attr_setinheritsched( &t_attr, PTHREAD_EXPLICIT_SCHED );
pthread_attr_setscope( &t_attr, PTHREAD_SCOPE_PROCESS );
iThCreateRes = pthread_create( &szThreadHandle, &t_attr, test2, (void *)777 );
if( iThCreateRes == 0 )
{
}
return ( bRet );
}
void *test2( void *iParam )
{
return (void*)0;
}
-------------------------------ここまで-------------------------------
No.2ベストアンサー
- 回答日時:
asm/errno.hをみれば分かると思いますが、EINTRというエラーが発生しています。
通常、pthread_create()のエラーとしてはEINVALか、EAGAINがあります。
ざっくり、ソースを見たところ、pthread_create()の呼び出しで、引数に(void *)777と指定していますが、これが間違っているのでは?
int arg = 777;
iThCreateRes = pthread_create(&szThreadHandle, &t_attr, test2, (void *)&arg);
とやってみてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
gcc: incompatible pointer type
-
const_castのつかいどころを教...
-
VisualStudio2005C++の某参考書...
-
C言語 extern について
-
スレッドの作成について(pthre...
-
LNK2019:未解決の外部シンボル ...
-
C++にてtemplateで受け取った任...
-
C言語 プロトタイプ宣言
-
見た目は同じソースなのにエラ...
-
静的でないメンバ関数の呼び出...
-
戻り値を返す関数の前に(void)...
-
Arduinoでの圧電スピーカーとタ...
-
プログラムを教えてください。...
-
最早開始時間と最遅完了時刻を...
-
信頼区間の1.96や1.65ってどこ...
-
Aの値からBの値を除するとは??
-
strncpyと_tcsncpy_sのヌルの扱...
-
プログラムでの数字につく”f”の...
-
CStringのFindで文字列検索を行...
-
#define _CRT_SECURE_NO_WARNIN...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
静的でないメンバ関数の呼び出...
-
既定のコンストラクタがありま...
-
戻り値を返す関数の前に(void)...
-
C++にてtemplateで受け取った任...
-
【gcc・cygwin】multiple defin...
-
const_castのつかいどころを教...
-
多重定義が起きている?--lnk20...
-
gcc: incompatible pointer type
-
(void)0 はどんな意味ですか
-
C# KeyDownイベントでショート...
-
pictureboxの画像を削除するには?
-
Notepad++の関数リスト表示の変...
-
C#でテンキーの操作は可能でし...
-
アドレスを指定して関数を呼び...
-
ウインドウの移動禁止
-
画面上をクリックするとクリッ...
-
C# Controls.Addで動的に配置し...
-
別ソースファイル、同クラス名...
-
DLLの関数呼び出しで引数がある...
-
プログラム作成教えてください...
おすすめ情報