bez zbednych wstepow - chce przeslac jako parametr zmienna int a wymagany jest char.
uzylem rzutowania: (char)zmienna;
nie robilem nic i wyslalem
uzylem itoa
uzylem sprintf
w zadnym wypadku nie dziala. dla itoa w ogóle sie nie kompiluje jest jakis blad, kazdy inny przypadek powoduje ze potomek nie wyswietla sie w ogóle. probowalem wpisac jako char np wysylalem taki argument "1" - dziala wysmienicie.
dodatkowo, co zabawniejsze, jezeli zastosuje funkcje sprintf w stosunku do innej zmiennej, a argument wysylam normalnie - i tak nie dziala. po prostu uzycie tej funkcji powoduje ze ten fragment kodu w ogóle nie dziala.
i nie tylko, w kodzie w komentarzach jest przyklad jak probuje zrobic switcha lub if. bezskutecznie - ten sam efekt.
dla porzadku wrzuce kod:
#include<stdlib.h>
#include<unistd.h>
#include<stdio.h>
#include<string.h>
#include<sys/wait.h>
#include<sys/shm.h>
#include<sys/ipc.h>
#include<string.h>
#include<stdio.h>
int n = 4; // ILOŚĆ PROCESÓW
int main()
{
int status;
int i;
int wynikForka;
int macierzA[n][n];
int macierzB[n][n];
int macierzC[n][n];
int *macA, *macB, *macC;
zainicjujMacierze(n, macierzA, macierzB, macierzC);
int id1, id2, id3;
id1 = shmget(45281, sizeof(macierzA), IPC_CREAT|0600);
id2 = shmget(45282, sizeof(macierzB), IPC_CREAT|0600);
id3 = shmget(45283, sizeof(macierzC), IPC_CREAT|0600);
if( !id1 ) printf("\nnie mozna utworzyc pamieci dla macierzy A");
if( !id2 ) printf("\nnie mozna utworzyc pamieci dla macierzy B");
if( !id3 ) printf("\nnie mozna utworzyc pamieci dla macierzy C");
macA = (int*)shmat(id1, NULL, 0);
macB = (int*)shmat(id2, NULL, 0);
macC = (int*)shmat(id3, NULL, 0);
int a,b,c=0;
for(a=0;a<n;a++)
{
for(b=0;b<n;b++)
{
macA[c] = macierzA[a][b];
macB[c] = macierzB[a][b];
macC[c] = macierzC[a][b];
c++;
}
}
for(i=0;i<n;i++)
{
wynikForka = fork();
switch( wynikForka )
{
case -1:
{
printf("\nwystąpił błąd podczas tworzenia procesu");
i=n;
break;
}
case 0:
{
//char *arg1;
//sprintf(arg1, "%d", 2);
//arg1 = (char*)2;
char *arg1 = "2";
/*if (i == 0) *arg1 = "0";
if (i == 1) *arg1 = "1";
if (i == 2) *arg1 = "2";
if (i == 3) *arg1 = "3";*/
/* switch(i)
{
case 0: *arg1 = "0";
case 1: *arg1 = "1";
case 2: *arg1 = "2";
case 3: *arg1 = "3";
case 4: *arg1 = "4";
case 5: *arg1 = "5";
case 6: *arg1 = "6";
case 7: *arg1 = "7";
case 8: *arg1 = "8";
}*/
execl("./kodPotomny",arg1,'\0');
break;
}
default:
{
}
}
}
return 0;
}
da sie cos temu zaradzic ?