New implementation

Be concise.

Be useful.

All contributions dictatorially edited by webmasters to match personal tastes.

Please do not paste any copyright violating resource.

Please try to avoid dependencies to third-party libraries and frameworks.

Other implementations
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <linux/limits.h>
#include <libgen.h>
int main()
{
    char exe[PATH_MAX], real_exe[PATH_MAX];
    ssize_t r;
    char *dir;

    if ((r = readlink("/proc/self/exe", exe, PATH_MAX)) < 0)
      exit(1);
    if (r == PATH_MAX)
	r -= 1;
    exe[r] = 0;
    if (realpath(exe, real_exe) == NULL)
	exit(1);
    dir = dirname(real_exe);
    puts(dir);
}
dir = AppDomain.CurrentDomain.BaseDirectory;
import std.path;
void main(string[] args) {
    string dir = args[0].dirName;
}
import "os"
import "path/filepath"
programPath := os.Args[0]
absolutePath, err := filepath.Abs(programPath)
if err != nil {
	return err
}
dir := filepath.Dir(absolutePath)
import System.Environment (getExecutablePath)
import System.FilePath.Windows
dir <- takeDirectory `fmap` getExecutablePath
import System.Environment (getExecutablePath)
import System.FilePath.Windows
import System.IO.Unsafe (unsafePerformIO)
dir = unsafePerformIO (takeDirectory `fmap` getExecutablePath)
path
const path = require('path');

const currentFolder = path.resolve();
$dir = realpath(dirname(__FILE__));
dir := extractfilepath(paramstr(0));
use English qw($EXECUTABLE_NAME);
use Path::Tiny qw(path);
my $dir = path($EXECUTABLE_NAME)->parent;
import os
dir = os.path.dirname(os.path.abspath(__file__))
dir = __dir__
let dir = ::std::env::current_dir()?;