C/Visual C - Urgente por favor

 
Vista:

Urgente por favor

Publicado por Marianela (2 intervenciones) el 25/06/2002 07:43:24
por favor ayudenme a desarrollar programas en c para emular los comandos de unix
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Desarrollo de programas en C para emular comandos de UNIX

Publicado por Alejandro (913 intervenciones) el 06/03/2025 16:22:11
Marianela, a continuación, te proporcionaré ejemplos de programas en C que emulan algunos comandos básicos de UNIX: `ls`, `cp` y `grep`. Estos ejemplos te ayudarán a entender cómo funcionan estos comandos y cómo puedes implementarlos en C.

1. Emulación del comando `ls`



Este programa lista los archivos en un directorio especificado.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <dirent.h>
 
void listarArchivos(const char *nombreDirectorio) {
    struct dirent *entrada;
    DIR *directorio = opendir(nombreDirectorio);
 
    if (directorio == NULL) {
        perror("No se puede abrir el directorio");
        return;
    }
 
    while ((entrada = readdir(directorio)) != NULL) {
        printf("%s\n", entrada->d_name);
    }
 
    closedir(directorio);
}
 
int main() {
    const char *directorio = "."; // Directorio actual
    listarArchivos(directorio);
    return 0;
}

2. Emulación del comando `cp`



Este programa copia el contenido de un archivo a otro.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
 
void copiarArchivo(const char *origen, const char *destino) {
    FILE *archivoOrigen = fopen(origen, "rb");
    FILE *archivoDestino = fopen(destino, "wb");
 
    if (archivoOrigen == NULL || archivoDestino == NULL) {
        perror("Error al abrir los archivos");
        return;
    }
 
    char buffer[1024];
    size_t bytesLeidos;
 
    while ((bytesLeidos = fread(buffer, 1, sizeof(buffer), archivoOrigen)) > 0) {
        fwrite(buffer, 1, bytesLeidos, archivoDestino);
    }
 
    fclose(archivoOrigen);
    fclose(archivoDestino);
}
 
int main() {
    const char *archivoOrigen = "archivo.txt"; // Cambia por el archivo de origen
    const char *archivoDestino = "copia.txt";   // Cambia por el archivo de destino
    copiarArchivo(archivoOrigen, archivoDestino);
    return 0;
}

3. Emulación del comando `grep`



Este programa busca un patrón en un archivo y muestra las líneas que lo contienen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
#include <string.h>
 
void buscarEnArchivo(const char *nombreArchivo, const char *patron) {
    FILE *archivo = fopen(nombreArchivo, "r");
    char linea[256];
 
    if (archivo == NULL) {
        perror("Error al abrir el archivo");
        return;
    }
 
    while (fgets(linea, sizeof(linea), archivo)){
        if (strstr(linea, patron) != NULL) {
            printf("%s", linea);
        }
    }
 
    fclose(archivo);
}
 
int main() {
    const char *nombreArchivo = "archivo.txt"; // Cambia por el archivo a buscar
    const char *patron = "texto";              // Cambia por el patrón a buscar
    buscarEnArchivo(nombreArchivo, patron);
    return 0;
}

Resumen



Estos ejemplos te proporcionan una base para emular comandos de UNIX en C. Puedes compilar y ejecutar cada uno de estos programas en tu entorno de desarrollo. Asegúrate de modificar los nombres de los archivos y directorios según sea necesario.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar