Search code examples
linuxunixfilenames

Okay to call a file core.foo?


On Unix-like operating systems, one should never call a file core because it might be overwritten by a core dump, so that name is de facto reserved for use by the operating system.

But what about with an extension, like core.c? It seems to me this should be perfectly okay; core and core.c are two distinct names.

Is the above correct, and names like core.foo are okay? Or am I missing anything?


Solution

  • On Unix-like operating systems,

    Ie. on a system conforming to the single UNIX Specification (or just to POSIX). Or on a system belonging to the unix family.

    one should never call a file core because it might be overwritten by a core dump, so that name is de facto reserved for use by the operating system.

    No. I do not think there is a specification that specifies that core dumps are going into a file named "core". It's all "implementation defined", from posix:

    3.117 Core File

    A file of unspecified format that may be generated when a process terminates abnormally.

    If coredump is created, where is it created, how and what the contents are, it's all up to implementation. [Freebsd creates a file named executable_name.core for ages. So not "on unix-like operating systems". Your sentence could be made valid by changing the beginning to:

    On a linux system with kernel version lower then 2.6 or 2.4.21 one should never call a file "core", because...

    Kernel 2.6 and 2.4.21 is more then 15 years old. Newer kernels have /proc/sys/kernel/core_pattern that allow specifying the filename and location and even a process to run on a coredump. So if you are working with such archaic kernel version lower then 2.6 or 2.4.21 (or the content of /proc/sys/kernel/core_pattern is naively set to core), then yes, you should be careful when creating a file named "core".

    In today's world, that behavior doesn't matter at all, on most linux distributions systemd-coredump takes care of that and creates coredumps in /var/lib/systemd/coredump.

    But what about with an extension, like core.c?

    It's ok - core and core.c are different filenames. Dot is not a special character, it's just a character like anything else, core.c differs from core as much as core12 or coreAB does...

    Is the above correct,

    Yes.

    and names like core.foo are okay?

    Are okay.

    Or am I missing anything?

    No idea, but if you are, I surely hope you will find it.