execve()
keeps e.g. the process id and the parent-child relations, but wipes the memory of the process (replacing it with another program), plus some other things. And for file descriptors, it depends on the close-on-exec flag (FD_CLOEXEC
etc.) There's a list of what it does in at least the man page on Debian: manpages.debian.org/bullseye/manpages-dev/execve.2.en.html