Как чтобы добавить к файлам ошибку, если файл еще не существует?

Это полностью можно сделать, записав NUL в область памяти, в которой находятся переменные среды:

#include <stdio.h>
#include <unistd.h>

extern char **environ;

int main(void)
{
    int i;
    char *p = *environ;
    /* hopefully your ENV is longer than this */
    for (i = 0; i < 10; i++) *(p + i) = 0;
    printf("hexdump -C /proc/%d/environ\n", getpid());
    sleep(99999);
}

Если вместо этого вы запустите программу с пустой средой, то окружение файл будет полностью пустым:

execle("/bin/sleep", "sleep", "999", (char *)NULL, (char *const) NULL)

Таким образом, этот случай - это что-то, что было сделано процессом или с ним, когда он запущен (и мало что может предотвратить это, если вы каким-то образом не заблокируете эту память, а затем setenv (3) вызовы могут быть проблематичными ...).

2
19.11.2017, 08:22
0 ответов

Теги

Похожие вопросы