У меня есть код на C, который иногда сам себя разветвляет, каждая вилка что-то делает, а затем возвращает код ошибки. В настоящее время каждый дочерний процесс возвращает свой идентификатор (0..n).
void other(int numero){
...
exit(numero);
}
int main(...){
for(int i = 0; i < 6; i++){
if(fork() == 0){
other(i);
}
}
int order[6];
for(int i = 0; i < 6; i++){
int code;
waitpid(0, &code, 0);
order[i] = code; // <-- HERE
}
}
Странно, это возвращает кратное реального значения. Заменив строку, я пометил:
order[i] = code >> 8;
Мне удалось получить ожидаемый результат 0..5. Однако я действительно не понимаю, почему это происходит. Я ожидаю, что это из-за какой-то проблемы с типом, но я не вижу этого, я всегда использую целые числа.