<p>How can I convert a relative path to an absolute path in C on Unix?
Is there a convenient system function for this?</p>

<p>On Windows there is a <code>GetFullPathName</code> function that does the job, but I didn't find something similar on Unix...</p>

Use
realpath()
.
The
```
realpath()
```
function shall derive,
  from the pathname pointed to by
```
file_name
```
, an absolute pathname that
  names the same file, whose resolution
  does not involve '
```
.
```
', '
```
..
```
', or
  symbolic links. The generated pathname
  shall be stored as a null-terminated
  string, up to a maximum of
```
{PATH_MAX}
```
bytes, in the buffer pointed to by
```
resolved_name
```
.
If
```
resolved_name
```
is a null pointer,
  the behavior of
```
realpath()
```
is
  implementation-defined.
The following example generates an
  absolute pathname for the file
  identified by the symlinkpath
  argument. The generated pathname is
  stored in the actualpath array.
```
```
#include <stdlib.h>
...
char *symlinkpath = "/tmp/symlink/file";
char actualpath [PATH_MAX+1];
char *ptr;

ptr = realpath(symlinkpath, actualpath);
```
```