Привет, я просто пытаюсь использовать posix_spawn на OSX, это должно работать find (как для * nix) в любом случае после sysall posix_spawn, процесс получит SIGTRAP, я действительно не могу понять, почему.posix_spawn OSX error 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;
}
Он должен работать вечно, но вывод идентификатора будет напечатан только один раз.
Спасибо за вашу поддержку!
Нет проблем под Linux ... Извините, я не могу помочь. – Aubin
Выньте все ужасные магические числа, в которые вы жестко закодированы, и проверьте возвращаемые значения всех ваших вызовов функций. Кроме того, почему вы mallocing вещи каждый раз вокруг цикла, а не один раз снаружи? –