嗨,我只是想在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而不是外部使用? –