Ir para conteúdo
Fórum Script Brasil
  • 0

Shared Memory


tiagokos

Pergunta

Opa, tudo bom?

Meu problema é o seguinte, tenho que fornecer um char para o meu processo pai, se for string manda para o filho 1 e o processo filho processo 1 imprime na tela, se for número manda para o processo filho 2 e o processo filho 2 imprime na tela.

Tudo isso usando Shared Memory.

Poderiam me ajudar, onde estou errando?

#include <sys/shm.h>
#include <stdio.h>
#include <stdlib.h>

int main() {
    int pid1;
    int pid2;
    char caracter;
    
    char *memoria;
    int shmid;
    char *ponteiro;
    
    shmid = shmget(IPC_PRIVATE, sizeof(int), IPC_CREAT|0666);
    memoria = shmat(shmid, 0, 0);
    
    pid1 = fork();
    if (pid1 == 0) {
        ponteiro = (char *)memoria;
        if(ponteiro >= 'A' && ponteiro <= 'z') {
            printf("1 - %d\n", toupper((char *)ponteiro));
        }
            
    }
    else if (pid1 > 0) {
        pid2 = fork();
        if (pid2 == 0) {
                        ponteiro = (char *)memoria;
            if(ponteiro >= '0' && ponteiro <= '9') {
                printf("2 - %s\n", ponteiro);
            }        
        }
        else if (pid2 > 0) {
            printf("Informe um caracter:\n");
            scanf("%c", &caracter);
            if (caracter >= '0' && caracter <= '9') {
                printf("É número!\n");
                ponteiro = (char *)memoria;
                *ponteiro = caracter;
                strcpy(memoria, ponteiro);
            }
            else if (caracter >= 'A' && caracter <= 'z') {
                printf("É string!\n");
                ponteiro = (char *)memoria;
                *ponteiro = caracter;
                strcpy(memoria, ponteiro);
            } 
            else {
                printf("Ignorado.\n");
            }
        }
        else {
            printf("Erro de processo.\n");
        }
    }
    else {
        printf("Erro de processo.\n");
    }
    wait();
    return 0;
}

Obrigado!

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...