Hallo, ich versuche nur, posix_spawn auf OSX zu verwenden, das sollte funktionieren (wie für * nix) sowieso nach posix_spawn syscall der Prozess wird SIGTRAP erhalten, ich kann wirklich nicht verstehen, warum.posix_spawn OSX-Fehler sigtrap
#include <spawn.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
while(1){
char *newargv[] = { "/usr/bin/id", 0 };
char *newenviron[] = {0};
posix_spawnattr_t * a;
posix_spawn_file_actions_t * fa;
fa = malloc(0x80);
a = malloc(336);
//printf("size: %d\n", sizeof(posix_spawnattr_t));
posix_spawnattr_init(a);
posix_spawnattr_setflags(a, 0x40);
posix_spawn_file_actions_init(fa);
pid_t pid;
int status = 0;
posix_spawn(&pid, "/usr/bin/id", fa, a, newargv, newenviron);
waitpid(pid, &status, 0);
printf("pid: %d\n", pid);
}
//printf("pid: %d\n", pid);
return 0;
}
Es sollte für immer laufen, aber die Ausgabe von ID wird nur einmal gedruckt.
Vielen Dank für Ihre Unterstützung!
Kein Problem unter Linux ... Sorry, ich kann nicht helfen. – Aubin
Nehmen Sie alle schrecklichen magischen Zahlen heraus, die Sie fest programmiert haben, und überprüfen Sie die Rückgabewerte aller Ihrer Funktionsaufrufe. Warum mallokierst du auch jedes Mal auf der Schleife, anstatt einmal draußen? –