можно ли использовать "fopen" или "open" для открытия текущей программы (argv [0]) - PullRequest
2 голосов
/ 27 мая 2020

Я в основном пытаюсь создать FILE указатель на текущий файл (argv[0]), используя fopen(), но он возвращает SegFault, я попытался распечатать ошибку и получил: Текстовый файл занят. Вот что у меня получилось. Очевидно, ошибка находится в строке 14, if (localFile == NULL)

void copy(char *localFileName, char *targetFileName) {
    int ch;
    FILE *localFile = fopen(localFileName, "r+b");
    FILE *targetFile = fopen(targetFileName, "r+b");
    FILE *tempFile = fopen("tempFile.bin", "wb+");
    if (tempFile == NULL) {
        perror("tempFile");
    }

    if (targetFile == NULL) {
        perror("targetFile");
    }

    if (localFile == NULL) {
        perror("localFile");
    }
    while((ch = fgetc(localFile)) != EOF) { 
        fputc(ch, tempFile);
    }
    while ((ch = fgetc(targetFile)) != EOF) {
        fputc(ch, tempFile);
    }
    fclose(localFile);
    fclose(targetFile);
}
...