как скомпилировать fork () на windows [сейчас пытается с cygwin] - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь перевести код c, написанный для linux, в c -код для windows. При попытке 'make' он говорит:

неявное объявление функции 'fork'

Итак, я поискал inte rnet, нашел это: Что такое самая близкая вещь Windows должна быть fork ()? Скачал Cygwin, установил его и попробовал «make» снова, он выдает тот же самый вывод ошибки. После этого я скопировал свой проект c в папку cygwin, открыл программу cygwin-terminal и запустил в ней make, все равно вывод ошибок. После этого я скопировал cygwin1.dll из папки bin cygwin в папку моего проекта и изменил свой Makefile на

g cc -g -Wall -Wextra -Werror -o test_open cygwin1.dll main . c словарь. c config. c tools. c

затем снова запустите make в обычном терминале, но он все равно выдает неявную ошибку объявления.

Есть ли у вас какие-либо предложения, что я могу попробовать дальше для компиляции fork ()?

Включает:

#include<sys/types.h>
#include<unistd.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<stdbool.h>
#include<stdarg.h>
#include<errno.h>
#include<signal.h>

1 Ответ

0 голосов
/ 29 мая 2020

Fork требует заголовка

#include <unistd.h>

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fork.html

, который содержится в пакете cygwin-devel

$ cygcheck -f /usr/include/unistd.h
cygwin-devel-3.1.4-1

Использование пример кода из https://www.geeksforgeeks.org/fork-system-call/

#include <stdio.h> 
#include <sys/types.h> 
#include <unistd.h> 
int main() 
{ 

    // make two process which run same 
    // program after this instruction 
    fork(); 

    printf("Hello world!\n"); 
    return 0; 
} 

скомпилирован и запущен с

$ gcc prova.c -o prova

$ ./prova
Hello world!
Hello world!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...