pathmgr_symlink()

Updated: May 06, 2022

Create a symlink

Synopsis:

#include <sys/pathmgr.h>

int pathmgr_symlink( const char * path,
                     const char * symlink );

Arguments:

path
The path that you want to link to.
symlink
The name of the link that you want to create.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The pathmgr_symlink() function creates a symbolic link, symlink, in the process manager that redirects to the path specified by path.

In order to create the link, your process must have the PROCMGR_AID_PATHSPACE ability enabled. For more information, see procmgr_ability().

The pathmgr_unlink() function removes the link.

Note:
  • The symbolic link isn't permanent and is lost when the system reboots.
  • You can get some surprising results if you create a symbolic link to a directory that's a symbolic link to somewhere else. For more information, see Links and inodes in the Working with Filesystems chapter of the QNX Neutrino User's Guide.

Returns:

0
Success.
-1
An error occurred (errno is set).

Errors:

EACCES
(QNX Neutrino 7.0 or later) One of the following occurred:
  • Security policies are in use and there is no rule to permit the use of that path.
  • The process is sandboxed and the path is denied.
EBUSY
  • A symlink of the given name already exists.
ENOMEM
There isn't enough free memory to complete the operation.
EPERM
The calling process doesn't have the required permission; see procmgr_ability().

Examples:

#include <stdio.h>
#include <sys/pathmgr.h>

int main(int argc, char **argv) {

    /* Create a link from /mytmp to /dev/shmem */
    if(pathmgr_symlink("/dev/shmem", "/mytmp") == -1) {
            perror("Can't make link");
    }

    getchar();
    if(pathmgr_unlink("/mytmp") == -1) {
            perror("Can't unlink ");
    }

    return 0;
}

Classification:

QNX Neutrino

Safety:  
Cancellation point Yes
Interrupt handler No
Signal handler Yes
Thread Yes