diff --git a/syscalls/linux.cpp b/syscalls/linux.cpp index 5910fc8..2a7044f 100644 --- a/syscalls/linux.cpp +++ b/syscalls/linux.cpp @@ -715,6 +715,8 @@ static pid_t linux_fork(SysFrm *sf) NewProcess->vma->Fork(Parent->vma); NewProcess->ProgramBreak->SetTable(NewProcess->PageTable); NewProcess->FileDescriptors->Fork(Parent->FileDescriptors); + NewProcess->Executable = Parent->Executable; + NewProcess->CurrentWorkingDirectory = Parent->CurrentWorkingDirectory; TCB *NewThread = TaskManager->CreateThread(NewProcess, @@ -965,6 +967,13 @@ __no_sanitize("undefined") static int linux_execve(SysFrm *sf, const char *pathn return ret; } + const char *baseName; + cwk_path_get_basename(pPathname, &baseName, nullptr); + + pcb->Rename(baseName); + pcb->SetWorkingDirectory(File->node->Parent); + pcb->SetExe(pPathname); + delete File; Tasking::Task *ctx = pcb->GetContext(); // ctx->Sleep(1000);