Использование вызова файловой системы

Использование вызова файловой системы

Я пытаюсь изучить системные вызовы для открытия, записи и закрытия файла. Я использую этот пример и результат:

gcc: error trying to exec 'cc1plus': execvp: No such file or directory

Вот моя программа:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>

int main (int argc, char *argv[])
{
    int fd1;
    char buf[128];
    fd1 = open("Desktop/this.txt", O_WRONLY);
    if (fd1 == -1) {
        perror("File cannot be opened");
        return EXIT_FAILURE;
    }

    /* Enter the data to be written into the file */
    scanf("%127s", buf);

    write(fd1, buf, strlen(buf)); /* fd1 is the file descriptor, buf is the character array used to
 hold the data, strlen(buf) informs the function that the number of bytes equal to the length of the
 string in the buffer need to be copied */

    close(fdl);

    return 0;
}

решение1

Я предполагаю, что вы используете Ubuntu, Debian или некоторые производные. Убедитесь, что ваша система обновлена, а затем установите g++.

решение2

cc1plusявляется компонентом компилятора C++. Вы пытаетесь скомпилировать программу на языке C. Команда gccопределяет, какой компилятор вызвать, на основе имени исходного файла: компилятор C для .c, компилятор C++ для .ccили .C, компилятор Pascal для .p, ассемблер для .sи т. д.

Похоже, вы дали своей программе имя, которое указывает на программу C++. Обратите внимание, что имена файлов Linux чувствительны к регистру. Исходные файлы C должны иметь расширение .c(в нижнем регистре c), а не .C. Пользователи Unix склонны использовать в именах файлов в основном строчные буквы, и в частности почти все обычные расширения файлов имеют строчные буквы. Поэтому обязательно используйте строчные буквы в именах файлов.

Связанный контент