From 235f42b8d814fa92f08c1173dffd480fbc71ed8e Mon Sep 17 00:00:00 2001 From: EnderIce2 Date: Tue, 5 Mar 2024 01:07:00 +0200 Subject: [PATCH] Update Linux fork and execve functions --- syscalls/linux.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) 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);