Usando la llamada al sistema de archivos

Usando la llamada al sistema de archivos

Estoy intentando aprender las llamadas al sistema para abrir, escribir y cerrar un archivo. Utilizo esta muestra y el resultado es:

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

Aquí está mi programa:

#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;
}

Respuesta1

Supongo que estás usando Ubuntu, Debian o algunos derivados. Asegúrese de que su sistema esté actualizado y luego instale g++.

Respuesta2

cc1pluses un componente de un compilador de C++. Estás intentando compilar un programa en C. El gcccomando determina qué compilador invocar según el nombre del archivo fuente: un compilador de C para .c, un compilador de C++ para .cco .C, un compilador de Pascal para .p, un ensamblador para .s, etc.

Parece que le diste a tu programa un nombre que indica un programa C++. Tenga en cuenta que los nombres de archivos de Linux distinguen entre mayúsculas y minúsculas. Los archivos fuente C deben tener la extensión .c(minúscula c), no .C. Los usuarios de Unix tienden a utilizar principalmente letras minúsculas en los nombres de los archivos y, en particular, casi todas las extensiones de archivos convencionales están en minúsculas. Así que asegúrese de utilizar nombres de archivos en minúsculas.

información relacionada