Η σελίδα μας αναβαθμίστηκε, γι' αυτό τον λόγο τα μέλη μας θα πρέπει να ζητήσουν νέο κωδικό πρόσβασης από την υπηρεσία "Αποστολή κωδικού πρόσβασης".
Εάν το email με τον νέο κωδικό δεν έρθει στο inbox κοιτάξτε και στο spam folder. Ο server είναι φρέσκος και δεν έχει το reputation που του αξίζει.

Που κάνω λάθος

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
GiwrgosNik
Δημοσιεύσεις: 3
Εγγραφή: 04 Δεκ 2007 20:22

Που κάνω λάθος

Δημοσίευση από GiwrgosNik » 05 Δεκ 2007 17:42

Έχω γράψει τον παρακάτω κώδικα δεν ξέρω γιατί δεν τρέχει.Μήπως ξέρετε αν έχω κάπου λάθος.Σας παρακαλώ κοιτάξτε το να μου πείτε γιατι πρέπει να την παραδώσω αύριο..Ευχαριστώ

#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>

void catch_alarm(int sig) {

printf("Child proccess will Exit..\n");
/*Se auti tin function termatizetai i diergasia paidi*/
exit(0);
}

void myfunc(int sig) {
signal(SIGALRM, catch_alarm);
alarm(15);
while (1) {

printf("I am the child\n");
}
}

int main(){

int pid;

signal(SIGALRM,catch_alarm);
pid = fork();

if (pid = 0) {

while (1) {

printf("I am the child\n");
}



} else {

if (!pid == 0) {

sleep(3);
printf("Mypid is : %d\n",getpid());

signal(SIGINT,myfunc);

}
}

}

Programmer
Δημοσιεύσεις: 67
Εγγραφή: 22 Σεπ 2007 06:55

Που κάνω λάθος

Δημοσίευση από Programmer » 05 Δεκ 2007 23:43

Τα λάθη που κάνουν μπαμ είναι
το if (pid = 0)
κάντο if (pid == 0)
και το
if (!pid == 0)
κάντο if (!(pid == 0))

βάλε και στο τέλος της main κανένα return 0; να μην διαμαρτύρεται ο μεταγλωττιστής...

απορώ που βρίσκετε τον κώδικα... και πως τον χρησιμοποιήτε... όταν δεν ξέρετε τα στοιχειώδη...
Τελευταία επεξεργασία από το μέλος Programmer την 06 Δεκ 2007 05:51, έχει επεξεργασθεί 1 φορά συνολικά.

GiwrgosNik
Δημοσιεύσεις: 3
Εγγραφή: 04 Δεκ 2007 20:22

Που κάνω λάθος

Δημοσίευση από GiwrgosNik » 05 Δεκ 2007 23:59

πουθενά δε βρίσκουμε τον κώδικα...προσπαθούμε μόνοι μας...
ναι όντως δεν ξέρουμε τα στοιχείώδη διότι είμαστε αρχάριοι και στη σχολή δε διδάσκουν τίποτα απολύτως. Απλά απαιτούν. ευχαριστώ πάντως.

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Που κάνω λάθος

Δημοσίευση από cherouvim » 06 Δεκ 2007 09:18

Programmer έγραψε:απορώ που βρίσκετε τον κώδικα... και πως τον χρησιμοποιήτε... όταν δεν ξέρετε τα στοιχειώδη...
Δώσε τα φώτα σου μεγάλε!

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Που κάνω λάθος

Δημοσίευση από dva_dev » 06 Δεκ 2007 12:00

Είναι καλή πρακτική να γράφεις τους ελέγχους βάζοντας πρώτα το σταθερό μέρος ώστε να χτυπάει ο compiler σε "χαζά" λάθη και να είναι εύκολο να τα εντοπίσεις. Δηλαδή
Αντί για
if (a == 0)
να γράφεις
if (0 == a)

Αν κάνεις λάθος και βάλεις = αντί για == το πρώτο δεν χτυπάει γιατί είναι αποδεκτή έκφραση ενώ το δεύτερο θα χτυπήσει λάθος.

Θα σου ήταν χρήσιμο θα ήταν να ρίξεις μια ματιά στο google για καλές πρακτικές προγραμματισμού. Ξεκίνα από εδώ

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Που κάνω λάθος

Δημοσίευση από cherouvim » 06 Δεκ 2007 17:20

dva_dev έγραψε:Είναι καλή πρακτική να γράφεις τους ελέγχους βάζοντας πρώτα το σταθερό μέρος ώστε να χτυπάει ο compiler σε "χαζά" λάθη και να είναι εύκολο να τα εντοπίσεις. Δηλαδή
Αντί για
if (a == 0)
να γράφεις
if (0 == a)
Ένα παρόμοιο στη Java είναι το εξής.
Αντί να πεις:

Κώδικας: Επιλογή όλων

if &#40;foo!=null && foo.equals&#40;"bar"&#41;&#41; &#123;
λες:

Κώδικας: Επιλογή όλων

if &#40;"bar".equals&#40;foo&#41;&#41; &#123;
Έτσι γλιτώνεις το null check.

Programmer
Δημοσιεύσεις: 67
Εγγραφή: 22 Σεπ 2007 06:55

Που κάνω λάθος

Δημοσίευση από Programmer » 07 Δεκ 2007 00:02

Κώδικας: Επιλογή όλων

Δώσε τα φώτα σου μεγάλε!
Δεν είχα σκοπό να σχολιάσω τις απαντήσεις σου, αλλα μιας και ζητάς (ειρωνικά?) τα φώτα μου, να σου τα δώσω....
cherouvim έγραψε:
dva_dev έγραψε:Είναι καλή πρακτική να γράφεις τους ελέγχους βάζοντας πρώτα το σταθερό μέρος ώστε να χτυπάει ο compiler σε "χαζά" λάθη και να είναι εύκολο να τα εντοπίσεις. Δηλαδή
Αντί για
if (a == 0)
να γράφεις
if (0 == a)
Ένα παρόμοιο στη Java είναι το εξής.
Αντί να πεις:

Κώδικας: Επιλογή όλων

if &#40;foo!=null && foo.equals&#40;"bar"&#41;&#41; &#123;
λες:

Κώδικας: Επιλογή όλων

if &#40;"bar".equals&#40;foo&#41;&#41; &#123;
Έτσι γλιτώνεις το null check.
Καμία σχέση του if (0 == variable) με το
if (object.equals(other_object) ) και το "string literal" object είναι έστω και αν δεν έχει όνομα...
Στην περίπτωση της C βάζεις το 0 στην αριστερή πλευρά για να σε ειδοποιήσει ο compiler για το λάθος σου στον τελεστή (αν υπάρξει = αντι του ==), επειδή το literal_constant = variable_name δεν είναι έγκυρη έκφραση του τελεστή = (απαιτέιται lvalue), ενώ στην περίπτωση του παραδέιγματος σου η σύνταξη είναι έγκυρη και στις δύο περιπτώσεις...

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Που κάνω λάθος

Δημοσίευση από cherouvim » 07 Δεκ 2007 06:55

Ναι, δεν είπα οτι είναι ίδιο. Απλά αντιστρέφοντας τα ο προγραμματιστής έχει μία επιπλέον ευκολία.

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες