J'ai réussi à appeler l'exit syscall de l'assembly, mais je strugling pour appeler le syscall _getpid et utiliser sa valeur de retour. Voici le code que je utilisegetpid de syscall avec l'application 32 bits et le noyau sur le léopard des neiges
.text
.globl _getpiddirect
_getpiddirect:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
movl $39, %eax
int $0x80
addl $8, %esp
popl %ebp
ret
et
#include <stdio.h>
#include <unistd.h>
extern unsigned long getpiddirect();
int main(int argc, const char *argv[])
{
printf("%lu\n", getpiddirect());
printf("%lu\n", (unsigned long) getpid());
return 0;
}
getpiddirect revient sans cesse 4056.
Merci d'avoir répondu correctement. Je me suis trompé getppid avec getpid. Les 8 octets supplémentaires sont nécessaires pour maintenir la pile alignée comme requis par mac os ABI. –