Sie haben bereits eine vorhandene Referenzdatei - die in /proc/30304/fd
. Es ist nur ein bisschen schwierig, es zu benutzen, da reguläres link () es ablehnt. Sie müssen linkat () verwenden .
Schreibe ein kleines C-Programm. Setze dies in foo.c
:
#include <fcntl.h> #include <err.h> int main(int argc, char *argv[]) { char *src, *dstdir, *dstname; int dirfd, r; if (argc < 4) errx(2, "not enough parameters"); src = argv[1]; dstdir = argv[2]; dstname = argv[3]; dirfd = open(dstdir, O_DIRECTORY); if (dirfd < 0) err(1, "open(%s) failed", dstdir); r = linkat(AT_FDCWD, src, dirfd, dstname, AT_SYMLINK_FOLLOW); if (r < 0) err(1, "linkat(%s, %s/%s) failed", src, dstdir, dstname); return 0; }
Führen Sie es aus als:
make foo ./foo '/proc/30304/fd/4' '/var/log' 'recovered.log'