---
name: "tracefs_file_exists"
section: "3"
platform: "linux"
package: "libtracefs"
version: "1.8.4-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/tracefs_file_exists"
---

# tracefs\_file\_exists(3)

Work with files directories in tracing instances.

## NAME

tracefs\_file\_exists, tracefs\_dir\_exists, tracefs\_instance\_get\_file, tracefs\_instance\_get\_dir - Work with files directories in tracing instances.

## SYNOPSIS

```
#include <tracefs.h>
bool tracefs_file_exists(struct tracefs_instance *instance, char *name);
bool tracefs_dir_exists(struct tracefs_instance *instance, char *name);
char *tracefs_instance_get_file(struct tracefs_instance *instance, const char *file);
char *tracefs_instance_get_dir(struct tracefs_instance *instance);
```

## DESCRIPTION

This set of APIs can be used to work with trace files in all trace instances. Each of these APIs take an *instance* argument, that can be NULL to act on the top level instance. Otherwise, it acts on an instance created with **tracefs\_insance\_create**(3)

The **tracefs\_file\_exists()** function checks if a file with *name* exists in *instance*.

The **tracefs\_dir\_exists()** function checks if a directory with *name* exists in *instance*.

The **tracefs\_instance\_get\_file()** function returns the full path of the file with given *name* in *instance*. Note, it does not check if the file exists in the instance.

The **tracefs\_instance\_get\_dir()** function returns the full path of the directory with given *name* in *instance*. Note, it does not check if the directory exists in the instance.

## RETURN VALUE

The **tracefs\_file\_exists()** and **tracefs\_dir\_exists()** functions return true if the file / directory exist in the given instance or false if it does not exist.

The **tracefs\_instance\_get\_file()** and **tracefs\_instance\_get\_dir()** functions return a string or NULL in case of an error. The returned string must be freed with **tracefs\_put\_tracing\_file()**.

## EXAMPLE

```
#include <tracefs.h>
struct tracefs_instance *inst = tracefs_instance_create("foo");
        if (!inst) {
                /* Error creating a new trace instance */
                ...
        }
        if (tracefs_file_exists(inst,"trace_clock")) {
                /* The instance foo supports trace clock */
                char *path, *clock;
                int size;
                path =  = tracefs_instance_get_file(inst, "trace_clock")
                if (!path) {
                        /* Error getting the path to trace_clock file in instance foo */
                        ...
                }
                ...
                tracefs_put_tracing_file(path);
                clock = tracefs_instance_file_read(inst, "trace_clock", &size);
                if (!clock) {
                        /* Failed to read trace_clock file in instance foo */
                        ...
                }
                ...
                free(clock);
                if (tracefs_instance_file_write(inst, "trace_clock", "global") != strlen("global")) {
                        /* Failed to set gloabl trace clock in instance foo */
                        ...
                }
        } else {
                /* The instance foo does not support trace clock */
        }
        if (tracefs_dir_exists(inst,"options")) {
                /* The instance foo supports trace options */
                char *path = tracefs_instance_get_file(inst, "options");
                if (!path) {
                        /* Error getting the path to options directory in instance foo */
                        ...
                }
                tracefs_put_tracing_file(path);
        } else {
                /* The instance foo does not support trace options */
        }
        ...
        if (tracefs_instance_is_new(inst))
                tracefs_instance_destroy(inst);
        else
                tracefs_instance_free(inst);
        ...
        long long int res;
        if (tracefs_instance_file_read_number(NULL, "tracing_on", &res) == 0) {
                if (res == 0) {
                        /* tracing is disabled in the top instance */
                } else if (res == 1) {
                        /* tracing is enabled in the top instance */
                } else {
                        /* Unknown tracing state of the top instance */
                }
        } else {
                /* Failed to read integer from tracing_on file */
        }
        ...
        int fd;
        fd = tracefs_instance_file_open(NULL, "tracing_on", O_WRONLY);
        if (fd >= 0) {
                /* Got file descriptor to the tracing_on file from the top instance for writing */
                ...
                close(fd);
        }
```

## FILES

```
tracefs.h
        Header file to include in order to have access to the library APIs.
-ltracefs
        Linker switch to add when building a program that uses the library.
```

## SEE ALSO

[**libtracefs**(3)](/libtracefs/3.md), [**libtraceevent**(3)](/libtraceevent/3.md), [**trace-cmd**(1)](/trace-cmd/1.md)

## AUTHOR

```
Steven Rostedt <rostedt@goodmis.org[1]>
Tzvetomir Stoyanov <tz.stoyanov@gmail.com[2]>
```

## REPORTING BUGS

Report bugs to \<**linux-trace-devel@vger.kernel.org**\[3\]\>

## LICENSE

libtracefs is Free Software licensed under the GNU LGPL 2.1

## RESOURCES

**https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/**

## COPYING

Copyright (C) 2020 VMware, Inc. Free use of this software is granted under the terms of the GNU Public License (GPL).

## NOTES

- 1\.

  rostedt@goodmis.org

  mailto:rostedt@goodmis.org

- 2\.

  tz.stoyanov@gmail.com

  mailto:tz.stoyanov@gmail.com

- 3\.

  linux-trace-devel@vger.kernel.org

  mailto:linux-trace-devel@vger.kernel.org
