In C on linux, can the chdir() function accept a relative path?
Yes. The current working directory is a property of the process.
To expand on that a little - here are a couple of the relevant POSIX definitions:
The current working directory is defined as "a directory, associated with a process, that is used in pathname resolution for pathnames that do not begin with a slash character" (there is more detail in the section on pathname resolution).
chdir() is defined to set the current working directory to a pathname.
It seems somewhat circular, but there is nothing special about a "pathname" in the context of the argument chdir()
; it is subject to pathname resolution as normal.