私はしばらくのうちにコード化していませんでした。c programmin配列とポインタ
私はこのメインが始まります。私は複数のスレッドがそれにアクセスすることを可能にするグローバルスコープで* ARGV []のコピーを作成できるようにする必要が
int main(int argc, char *argv[])
、これを行うには、高速/簡単な方法はありますか?
私はしばらくのうちにコード化していませんでした。c programmin配列とポインタ
私はこのメインが始まります。私は複数のスレッドがそれにアクセスすることを可能にするグローバルスコープで* ARGV []のコピーを作成できるようにする必要が
int main(int argc, char *argv[])
、これを行うには、高速/簡単な方法はありますか?
一つの方法:
char ** prog_argv;
int prog_argc;
int main(int argc, char *argv[])
{
prog_argv = argv;
prog_argc = argc;
. . .
}
これはあなたのargv[]
配列を指すグローバルポインタprog_argv
を宣言します。安全な側にするには、prog_argc
をグローバルに使用する必要があります(ただし、argv[argc]
はNULLポインタ(?)です)。
もちろん、他のプロジェクトソースファイルのために、ヘッダーファイルにprog_argv
とprog_argc
を宣言する必要があります。
オペレーティングシステムの中には、すでにこのようなものがあります。グローバル変数の名前は通常、_argv
または__argv
のようなものです。
これは完璧でした! – Benjamin
argv
の配列(main
に指定)をコピーする必要はありません。ポインタをスレッドに送信するだけで済みます。これは非常に簡単です(引数を渡すか、それを含むいくつかのグローバル変数を持つことによって)。それを行うには
次にpthread_create(&thread1、NULL、do_thread_stuff、* argv);これは私が試していたものですが、間違いを犯しています、私が間違っていることを示唆していますか? – Benjamin
私はスターなしで 'pthread_create(&thread1、NULL、do_thread_stuff、arg)'する必要があると思います。 –
Cでプログラミング==あなたの手の後ろのようなポインタを知っている。それらについてのすべてを学んでください:) –