我在一段時間內沒有用c語言編寫代碼,而且我從來沒有用過指針。c programmin數組和指針
我有這個開始爲主。
int main(int argc, char *argv[])
我需要能夠做的副本*的argv []在全球範圍內,允許多個線程訪問它,有沒有一種快速/簡單的方法來做到這一點?
我在一段時間內沒有用c語言編寫代碼,而且我從來沒有用過指針。c programmin數組和指針
我有這個開始爲主。
int main(int argc, char *argv[])
我需要能夠做的副本*的argv []在全球範圍內,允許多個線程訪問它,有沒有一種快速/簡單的方法來做到這一點?
一種方式做到這一點:
char ** prog_argv;
int prog_argc;
int main(int argc, char *argv[])
{
prog_argv = argv;
prog_argc = argc;
. . .
}
聲明一個全局指針prog_argv
指向您argv[]
陣列。請注意,你也應該使用全局的prog_argc
來保證安全(儘管我認爲argv[argc]
是一個空指針(?))。
當然,您需要在頭文件中聲明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語言編程,知道像手背一樣的指針。瞭解關於它們的所有信息:) –