c - error in fork and usleep -


मैं यह कोड लिखता हूं:

  #include & lt; stdio.h & gt; # शामिल करें & lt; stdlib.h & gt; # शामिल करें & lt; unistd.h & gt; # शामिल करें & lt; signal.h & gt; शून्य साइनचल्ड (इंट सिग्नल) {fprintf (stderr, "[X] बच्चा से बाहर निकल गया \ n"); } Int main () {संकेत (SIGCHLD, signchld); Int i; के लिए (i = 0; i & lt; = 300; i ++) {pid_t f; च = कांटा (); अगर (च == 0) {// बच्चा नींद (3 * 1000000); Fprintf (stderr, "[C1]% d \ n", i); बाहर निकलने के (0); Fprintf (stderr, "[सी 2]% d \ n", i); } और अगर (एफ & gt; 0) {fprintf (stderr, "[P1]% d \ n", i); usleep (20000000); Fprintf (stderr, "[P2]% d \ n", i); }} वापसी 0; }   

लेकिन [p2] प्रत्येक 3 सेकंड चलाएं और फिर अगले लूप चलाएं

मुझे यह आउटपुट देखने की उम्मीद है:

[P1] 0 [C1] 0 [X] बच्चा से बाहर निकल गया

20 सेकंड

  [P2] 0 [P1 ] 1 [सी 1] 1 [एक्स] बच्चे से बाहर निकल    

यह संकेत हैंडलर < कोड> साइनचल्ड () उस बिगड़ती नींद () माता-पिता में, जैसा कि हम प्रतिस्थापन के द्वारा साबित कर सकते हैं

  नींद (20000000);   

के साथ

  अगर (नींद (20000000) & lt; 0) {if (errno == EINTR) fprintf (stderr, "[PX] नींद ( ) एक संकेत \ n "द्वारा बाधित;); }   

(और निश्चित रूप से errno.h सहित)। यह एक प्रिंट [P2] 0 [P1] 1

<>

और इतने पर।

मेरे सिस्टम पर (जीएनयू / लिनक्स) usleep () के लिए मैन पेज पढ़ता है:

4.3 बीएसडी, पीओएसआईएसआईएसआईएसआई -1.2001 POSIX.1-2001 इस समारोह को अप्रचलित घोषित करता है; बजाय नैनोस्ड (2) का उपयोग करें POSIX.1-2008 नींद () के विनिर्देश को हटा देता है।

केवल EINVAL त्रुटि वापसी SUSv2 और POSIX.1-2001 द्वारा प्रलेखित है।

Comments

Popular posts from this blog

Java - Error: no suitable method found for add(int, java.lang.String) -

java - JPA TypedQuery: Parameter value element did not match expected type -

c++ - static template member variable has internal linkage but is not defined -