ping
потребности базируются, таким образом, это может открыть сокет в режиме без предварительной обработки. Это - буквально первая вещь, которую это делает, когда это запускает:
icmp_sock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
socket_errno = errno;
Это - единственная вещь, которую это должно поддержать, так как много программ, это сразу роняет свой уровень полномочий в Вашу учетную запись обычного пользователя:
uid = getuid();
if (setuid(uid)) {
perror("ping: setuid");
exit(-1);
}
Имя, сгенерированное mktemp
может быть изменен, чтобы не иметь никаких точек. Например:
mktemp XXXXX => 8U5yc
mktemp /tmp/XXXXX => /tmp/tsjoG
От человека mktemp
:
DESCRIPTION
Create a temporary file or directory, safely, and print its name. TEM‐
PLATE must contain at least 3 consecutive 'X's in last component. If
TEMPLATE is not specified, use tmp.XXXXXXXXXX, and --tmpdir is implied.
Files are created u+rw, and directories u+rwx, minus umask restric‐
tions.
В любом случае забудьте о tempfile
, просто используйте mktemp
. Следующее от man tempfile
на моем Debian (шахта акцента):
ОШИБКИ
Эксклюзивное создание не гарантируется при создании файлов на разделах NFS. tempfile не может сделать временные каталоги. tempfile удерживается от использования; необходимо использовать mktemp (1) вместо этого.