Too bad Unix didn't provide an efficient
way to save/restore chdir context (based on i-node instead of on a path string).
Many unixes now provide an fchdir call which does what you want;
instead of a pathname, it accepts an open file descriptor and then
sets the cwd to the directory pointed to by the descriptor. To save
the old cwd, you simply open the current directory. After you've
done chdir, you can fchdir to the descriptor
returned by the open when you want to go back.
You can't have a system call that simply accepts an i-number,
because such a call would bypass the filesystem's permission controls.