Ir para conteúdo
Fórum Script Brasil

Jesus kleiton

Membros
  • Total de itens

    5
  • Registro em

  • Última visita

Sobre Jesus kleiton

Jesus kleiton's Achievements

0

Reputação

  1. Ola, tudo bem? Estou fazendo uma aplicacao que consiste em 2 processos, o pai e o filho, o filho deve preencher um bloco de chars e coloca-lo em um segmento de memoria compartilhada, o pai, deve pegar o bloco desse segmento de memoria compartilhada e testa-lo. Mas estou com alguns problemas, um deles e que não consigo fazer com que o filho preencha o segmento na segunda vez que executo o programa dando o erro "File exists". Obs: o pai ainda não esta lendo o segmento... porem.. quando o filho termina, deveria aparecer uns printfs que botei pra testar o programa.. ou seja.. mesmo quando o filho consegue executar o shmget.. ainda sim o programa so vai ate o filho acabar sua execucao.. ignorando tudo o que coloquei no processo pai. #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <errno.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> #include <sys/time.h> #include <string.h> #include "semlib.h" #define IPC_KEY 456 #define LENGTH 128 int testa_bloco(char *b,unsigned t); void preenche_bloco(char *b,unsigned t); void preenche_bloco(char *b,unsigned t) { unsigned i; char l='A'; for (i=0;i<t;++i) { *b++ = l; l = (l=='Z')?'A':l+1; }//fim do for }//fim preenche_bloco int testa_bloco(char *b,unsigned t) { unsigned i; char l='A'; for (i=0;i<t;++i) { if (*b++ != l) return(0); l = (l=='Z')?'A':l+1; }//fim do for return(1); }//fim testa_bloco int main() { int shmid, res; int size = 1024; char *mem; char bloco[LENGTH]; pid_t filho; /* Cria um segmento de memoria compartilhada. */ shmid = shmget ( (key_t)IPC_KEY, size, IPC_CREAT | IPC_EXCL | 0x1c0 ); if (shmid == -1) { printf("Error in shmget(): %s \n",strerror(errno)); exit(1); } printf("SHMID = %d \n",shmid); filho = fork(); if (filho==0) { /* PREENCHE */ preenche_bloco(bloco,LENGTH); /* Conecta o seg. de mem. compartilhada ao seg. de dados do processo. */ mem = shmat( shmid, (char *)0, 0); if (mem==(char *)-1) { printf("Error in shmat(): \n"); } else { strcpy(mem,bloco); /* Desconecta o segmento compartilhado. */ res = shmdt (mem); if (res==-1) { printf("Error in shmdt(): %s\n",strerror(errno)); } } printf("passou do strcpy \n"); return(0); } /* RECEBE MSG */ printf("executou ate recebe msg01 \n",); return(0); } Por favor, alguém conseguiu perceber onde esta o problema ? Procurei algo sobre isso na internet, mas não vi nenhuma funcao que deixa-se esse segmento livre para ser usado novamente desde já agradeco
  2. Puxa obrigado, realmente funciona... hum.. e o processo inverso?? Fazer um backup? Como seria? O backup que recebi esta com um problema, pois não consegue achar o banco das tabelas importadas. Tem solução ou preciso fazer um novo backup? desde já agradeço.
  3. Olá, amigos! Tudo bem?? estou a tentar importar um backup do banco para o meu mysql, mas não estou a conseguir... Eis o q estou a usar. mysql -u root NomeDoBancoQueQueroImportar<c:\backup.bkp Como posso obter os dados desse backup?? desde já agradeço.
  4. Estou a usar o Access 2002... se não posso migrar usando o ODBC.. como posso faze-lo?
  5. Olá dres, tudo bem? Estou a tentar migrar uma base de mysql para acess. Me indicaram o conector ODBC, mas não consigo configura-lo quando testo a conexão aparece a seguinte mensagem de erro: "Connection Failed: [HY000][MySQL][ODBC 5.1 Driver] Unknown System variable character_set_results" O q poderia ser isso?? Desde já agradeço.. obrigado.
×
×
  • Criar Novo...