Я относительно новичок в C, и при создании одной из моих программ у меня есть структура, и в дочернем процессе я изменяю некоторые атрибуты этой структуры, но я хочу, чтобы она отражала реальную структуру. В сокращенной версии моего кода моя основная функция создает структуру, называемую таблицей, и устанавливает все ее атрибуты на основе того, какой пользовательский ввод затем в функции maketable, дочерний процесс изменит статус на 1, что в данном случае означает, что программа будет выполненаскоро и вызовите runprogram для запуска table.program
struct task{
int id; // id of the task
int pid_t pid;
int status = 0;
JOB* program; // arguments of a program to run EX:sleep 30
}
void print_task_info(){
// prints all attributes of task to stdout
}
void getcommand(){
//makes a task struct and initializes it from user input
//then calls maketable
}
void maketable(struct task table){ // is called inside getcommand()
pid_t p;
if((p = fork()) == 0){
table.status = 1;
runprogram(table); // runs the task using execvp
}else
getcommand(); // getcommand() basically gets an id and calls maketable
}
Я бы хотел обновить table.status до 1, но результаты показывают, что table.status по-прежнему равен 0, а не 1.