Вы действительно имеете существующий файл справки - один в /proc/30304/fd
. Использовать его немного сложно, так как обычная ссылка () не принимает его. Вам нужно будет использовать linkat () .
Написать небольшую программу на Си. Поместите это в 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; }
Запустите это как:
make foo ./foo '/proc/30304/fd/4' '/var/log' 'recovered.log'