strtok()
není MT-safe, protože ukládá některé přechodné proměnné globálně a znovu je používá při každém volání (viz, nemusíte znovu předávat řetězec pokaždé, když voláte strtok()
).Můžete se podívat na manuálové stránky metod, které používáte a na konci je vždy uvedeno, zda je MT-safe nebo ne.
Pokud metoda není MT-safe (multi-thread safe nebo reentrant), měli byste hledat stejnou metodu s příponou _r, která znamená reentrand. Ve vašem příkladu strtok_r()
jak je navrženo v druhé odpovědi.
strtok()
není reentrant, takže by neměl být používán z aplikací s vlákny, použijte strtok_r()
místo toho.
Propojení se starou verzí knihovny libc pro zajištění většího pokrytí aplikací
Může spustitelný soubor objevit svou vlastní cestu? (Linux)