0
傢伙,我有以下的C代碼:爲什麼wait()的返回-1版本的Xcode 7.2.1(7C1002)
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <errno.h>
int main (int argc, char *argv[])
{
int exit;
pid_t tc_pid, ret_pid;
tc_pid = fork();
if(tc_pid != 0){
ret_pid = wait(&exit);
printf("parent process done, tc_pid = %d, ret_pid = %d, errno = %d\n", tc_pid, ret_pid, errno);
fflush(stdout);
}
printf("parent process done, tcpid = %d, my_pid = %d\n", tc_pid, getpid());
fflush(stdout);
return 0;
}
在Xcode的輸出是:
parent process done, tcpid = 0, my_pid = 74377
parent process done, tc_pid = 74377, ret_pid = -1, errno = 4
parent process done, tcpid = 74377, my_pid = 74374
這裏哪裏等待的()的返回值是-1(應爲74377,如果正確的),並且errno是-4
然而,當我使用終端(I使用的zsh)相同的代碼運行,輸出爲:
parent process done, tcpid = 0, my_pid = 74419
parent process done, tc_pid = 74419, ret_pid = 74419, errno = 0
parent process done, tcpid = 74419, my_pid = 74418
這就是我想要的。有誰知道爲什麼會發生這種情況?多謝你們。
我的OSX是10.11.3,我的機器是2015年初的MBPR,xcode 7.2.1, gcc 4.2.1,Apple LLVM版本7.0.2(clang-700.1.81),目標:x86_64-apple-darwin15 .3.0,線程模型:POSIX
嗨,Michael,謝謝你的回覆,我只想看看fork()是如何工作的以及wait()如何工作的。問題是在gcc輸出是正確的,而在xcode不是,爲什麼會發生這種情況,xcode發送一箇中斷信號來處理? – Nimal