If I chdir within a thread, will that affect the cwd of the parent program?
Yes.
If you need relative paths in a multithreaded application, it's safest to use the at()
versions of functions. For example, openat()
is like open()
:
int openat(int dirfd, const char *pathname, int flags);
The first parameter is the fd to a directory. The path is relative to that directory.