嗨,我只是想在OSX上使用posix_spawn,这应该工作找到(至于* nix)posix_spawn系统调用后,进程将收到SIGTRAP我真的不明白为什么。posix_spawn OSX错误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;
}
它应该永远运行,但id的输出将只打印一次。
感谢您的支持!
在Linux下没有问题...对不起,我忍不住。 – Aubin
拿出你已经硬编码的所有可怕的幻数,并检查所有函数调用的返回值。另外,你为什么每次都在循环中使用malloc而不是外部使用? –