Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[c] Dodanie więcej informacji do msgsnd (ipc)

Ostatnio zmodyfikowano 2013-11-30 11:10
Autor Wiadomość
seomator
Temat założony przez niniejszego użytkownika
[c] Dodanie więcej informacji do msgsnd (ipc)
» 2013-11-28 23:58:36
Witajcie,
mam taki kod:

C/C++
struct man {
    long type;
    char text[ 10 ];
    char * dane;
};


int main() {
    struct man pos;
   
    scanf( "%s", pos.text );
    pos.dane = "tekst";
    msgsnd( id, & pos, sizeof( pos ), 0 );
}


I powiedzcie mi teraz dlaczego druga funkcja, ktora wyglada tak:

C/C++
msgrcv( id, & pos2, 4096, 0, 0 );
printf( "%s ", pos.dane );
printf( "%s\n", pos.text );

Zwraca tylko pos.text, a pos.dane jest puste? strlen zwraca 0.

Dodam, że gdy zamienię
char * dane
 na
int dane
i
pos.dane = "tekst";
 na
pos.dane = 123456;
 to działa także jestem w kropce bo nie wiem o co chodzi :D
P-97823
pekfos
» 2013-11-29 14:48:26
Zdefiniuj dane jako tablicę i kopiuj string funkcją strcpy() lub strncpy().
P-97840
seomator
Temat założony przez niniejszego użytkownika
» 2013-11-29 15:45:07
Dzieki.
P-97841
seomator
Temat założony przez niniejszego użytkownika
» 2013-11-29 20:35:21
Niestety jest pewien problem jak tak zrobię, to w drugim programie gdzie mam msgrcv program się jakby zapętla i w kółko pokazuje tę wiadomość.

Gdy była jedna zmienna było ok, a gdy dodałem tę drugą (tablica, strcpy) to się zapętla. Jakiś pomysł ?

edit: Oczywiscie w tym drugim programie gdzie jest msgrcv, to jest dobrze pokazane, tyle ze pokazuje caly cza w kołko, a warunek na pętle jest taki sam:

C/C++
if( id !=- 1 )
while( 1 ) {



Ale gdy zrobię dla liczby to działa.
P-97872
seomator
Temat założony przez niniejszego użytkownika
» 2013-11-30 11:10:29
Pomoże ktoś ?
P-97884
« 1 »
  Strona 1 z 1