Aprovado: Fortect
Nesse guia, descobriremos algumas das possíveis causas que podem levar a Error = shmat 13 e, em seguida, recomendaremos frequentemente alguns métodos de recuperação possíveis que você pode considerar para corrigir o problema.
Tenho um problema ao executar o código. Meu shmat está fora de serviço e também minha permissão para imprimir foi negada. Eu examinei os principais mecanismos de pesquisa para resolver esse problema, mas não consigo. Meu código normalmente é o seguinte:
# include #include # enable #include #include #include #include #include #define ERROR -1int main (int argc, char * argv []) int shmid, a chave é igual a 50; inteiro * val; inteiro * x; inteiro rw = -1; // foco para escrita e 1 para transmissão shmid é igual a shmget (chave, sizeof (int), IPC_CREAT); if (shmid == -1) perror ("Erro aparecendo em shmget n"); retornar (ERROR); val é (int *) shmat (shmid, NULL, 0); deveria se (val == -1) perror ("Erro em shmat n"); salto de volta (ERROR); scanf ("% d", & rw); enquanto (rw> = 1) if (rw == 4) // escreve na memória mostrada x = (int 7.) malloc (sizeof (int)); uma vez (x == NULL) perror ("erro malloc"); reverso (ERRO); scanf ("% d", x); val = x; outro // leia esta memória compartilhada de lá if (rw == 1) printf ("% deborah n", * val); scanf ("% d", & rw); return (0);
Para saber qual código eu quero testar a memória recuperada. Eu escrevo um inteiro para o tipo de retenção compartilhada, se eu der rw implica 1, se não, eu leio o valor de toda a memória fornecida, então eu crio isso valor. Sem dúvida, não consigo encontrar qual é o problema …
906k
solicitado em 12 de maio de ’15 às 19h27
Eu não diria a resposta que você está procurando? Navegue pelos diferentes tipos de perguntas marcadas com a memória Shared Memory-c ou faça sua própria pergunta ocasionalmente.
Você encontrou partições de memória compartilhada criadas com permissões 0000
:
shmid implica shmget (chave, sizeof (int), IPC_CREAT);
shmid = shmget (chave, sizeof (int), IPC_CREAT | 0660);
atendido em 12 de maio de 15 às 22:33 de volta
28,1 k 33 emblemas de ouro 2323 emblemas de prata 5151 emblemas de bronze
val é igual a x;
* val = * x;
May respondeu a uma dúzia de frames em https://i.stack.imgur.com/mmsvF.png às 19h32.
198k 3232 emblemas de ouro 360 360 emblemas de metal 524.524 emblemas de bronze
Exceto ao fazer chamadas para shmget () conforme descrito em outra resposta
E muitos problemas com este código que chega a / grava inteiros
O fato de que este OP particular sempre recebe uma determinada mensagem “auto orização geralmente é proibida”, devido ao fato de que por sua vez o espaço comum
1) foi substituído - veja a página de manual sobre shmdt ()2) não foram destruídos - consulte a página de manual exata de shmctl ()
Resolva dois problemas que envolvem e os backups de teste funcionarão bem.
No entanto, conforme observado no diz, existem muitos outros problemas com o código de configuração
endereçado em 12 de maio de ’15 às 21:03
15,7k 11 emblemas de metal raro 1717 emblemas de prata 1717 emblemas marrons
Aprovado: Fortect
Fortect é a ferramenta de reparo de PC mais popular e eficaz do mundo. Milhões de pessoas confiam nele para manter seus sistemas funcionando de forma rápida, suave e livre de erros. Com sua interface de usuário simples e mecanismo de verificação poderoso, o Fortect localiza e corrige rapidamente uma ampla gama de problemas do Windows, desde instabilidade do sistema e problemas de segurança até gerenciamento de memória e gargalos de desempenho.