1
コマンドラインプログラムを使用して、別のスレッドを使用して現在の時刻を印刷できるようにします。私は現在、このように設定しています:現在の時刻をコマンドラインに出力するpthreadを作成します。
私はユーザー入力を受け取り、それを文字列time
と比較します。それらが等しい場合は、時間変数を設定する新しいスレッドを作成します。
char currentTime[20];
if (strcmp(input, "time") == 0) {
pthread_t thread;
int rc = pthread_create(&thread, NULL, getTime, NULL);
if (rc) {
printf("ERROR; return code from pthread_create() is %d\n", rc);
exit(-1);
}
}
マイgetTime
機能:
void getTime() {
time_t rawtime;
struct tm * timeinfo;
time (&rawtime);
timeinfo = localtime (&rawtime);
sprintf(currentTime,"%s", asctime (timeinfo));
printf("%s", currentTime);
pthread_exit(NULL);
}
私はこのことからAbort trap 6
エラーが出るが、私はpthreadのからすべてのエラーを得ることはありませんので、私は問題が何であるかわかりません。スレッドが正しく作成されているようです。
実際に何かを 'input'に読み込みますか?スレッドに引数を渡す必要がない場合でも、 'void getTime(){'は 'pthread_create()'が要求する 'void * getTime(void * arg){'でなければなりません。 –
'pthread'関数のシグネチャは' void * getTime(void * arg) 'なので、最初に行う必要があるのは' getTime() '関数を修正することです。 – user3629249