Есть ли способ заставить код изменять себя каждый раз, когда он запускается. Под этим я подразумеваю добавление новых функций и изменение существующих функций. Например, если у меня есть программа c, которая запускает определенную функцию, которая проверяет, существует ли файл, могу ли я изменить программу таким образом, чтобы во время выполнения я мог заставить ее открывать другой файл и постоянно сохранять эту новую программу.
Пример:
void eng_run()
{
int itr = 0;
int itr2 = 0;
int check = 0;
int conf = 0;
char arg1[10];
char arg2[10];
while(act_arg[itr] != NULL)
{
if((strcmp(act_arg[itr],"what") == 0) || (strcmp(act_arg[itr],"how") == 0) || (strcmp(act_arg[itr],"whats") == 0))
{
for(itr2 = itr + 1; act_arg[itr2] != NULL ; itr2++)
{
if((strcmp(act_arg[itr2],"list") == 0) || (strcmp(act_arg[itr2],"ls") == 0))
{
printf("\E[32mThe \"ls\" system call lists out all the files in the current directory. \n\E[0m");
conf++;
}
}
}
else if((strcmp(act_arg[itr],"list") == 0) && conf == 0)
{
bzero(act_arg,100);
act_arg[0] = (char *)malloc(sizeof(char) * 100);
strcat(act_arg[0],"ls");
check++;
}
}
}
В приведенной выше функции act_arg предварительно проанализированы аргументы командной строки. Теперь эта функция отвечает на такие вопросы, как:
Что делает список? (или) список всех файлов
Теперь я хочу, чтобы он модифицировал себя во время выполнения, если этого хочет использование, добавив что-то вроде способа обработки команды cp. Это означает, что он принимает:
Что делает КП? (или) скопировать файл один в файл два
Использование копии в качестве ключевого слова.