ಲಿನಕ್ಸ್ ಕಮಾಂಡ್ ಅನ್ನು ಕಲಿಯಿರಿ - ಕಾಯಿರಿ

ಹೆಸರು

ನಿರೀಕ್ಷಿಸಿ, ನಿರೀಕ್ಷಿಸು - ಪ್ರಕ್ರಿಯೆ ಮುಕ್ತಾಯಕ್ಕಾಗಿ ನಿರೀಕ್ಷಿಸಿ

ಸಾರಾಂಶ

# ಸೇರಿವೆ
# ಸೇರಿವೆ

pid_t ನಿರೀಕ್ಷಿಸಿ (ಇಂಟ್ * ಸ್ಥಿತಿ );
pid_t waitpid (pid_t pid , ಇಂಟ್ * ಸ್ಥಿತಿ , ಇಂಟ್ ಆಯ್ಕೆಗಳು );

ವಿವರಣೆ

ಮಗುವಿನಿಂದ ಹೊರಬರುವವರೆಗೂ, ಅಥವಾ ಸಿಗ್ನಲ್ ಅನ್ನು ರವಾನಿಸುವವರೆಗೂ, ಪ್ರಸ್ತುತ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಅಂತ್ಯಗೊಳಿಸಲು ಅಥವಾ ಸಿಗ್ನಲ್ ನಿರ್ವಹಣಾ ಕಾರ್ಯವನ್ನು ಕರೆಯುವ ಕಾರ್ಯವನ್ನು ಕಾಯುವ ಕಾರ್ಯವು ಪ್ರಸ್ತುತ ಪ್ರಕ್ರಿಯೆಯ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ರದ್ದುಗೊಳಿಸುತ್ತದೆ. ಕರೆಯ ಸಮಯದಿಂದ ಮಗುವನ್ನು ಈಗಾಗಲೇ ನಿರ್ಗಮಿಸಿದರೆ ("ಜೊಂಬಿ" ಪ್ರಕ್ರಿಯೆ ಎಂದು ಕರೆಯಲ್ಪಡುವ), ಕಾರ್ಯವು ತಕ್ಷಣವೇ ಹಿಂದಿರುಗುತ್ತದೆ. ಮಗುವಿನಿಂದ ಬಳಸಲ್ಪಡುವ ಯಾವುದೇ ಸಿಸ್ಟಮ್ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಬಿಡುಗಡೆ ಮಾಡಲಾಗುತ್ತದೆ.

ಪಿಡ್ ಆರ್ಗ್ಯುಮೆಂಟ್ನಿಂದ ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾದ ಮಗುವಿನಿಂದ ಹೊರಬಂದಾಗ ಅಥವಾ ಪ್ರಸ್ತುತ ಸಿಗ್ನಲ್ ನಿರ್ವಹಣಾ ಕಾರ್ಯವನ್ನು ಕರೆಯಲು ಸಿಗ್ನಲ್ ಅನ್ನು ರವಾನಿಸುವುದಕ್ಕಿಂತ ಮುಂಚಿತವಾಗಿ ಪ್ರಸ್ತುತ ಪ್ರಕ್ರಿಯೆಯ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ಅಮಾನತುಗೊಳಿಸುತ್ತದೆ. ಪಿಡ್ನಿಂದ ವಿನಂತಿಸಿದ ಮಗುವನ್ನು ಈಗಾಗಲೇ ಕರೆಯ ಸಮಯದಿಂದ ("ಜೊಂಬಿ" ಪ್ರಕ್ರಿಯೆ ಎಂದು ಕರೆಯಲಾಗುವ) ಹೊರಬಂದಿದ್ದರೆ, ಕಾರ್ಯವು ತಕ್ಷಣವೇ ಮರಳುತ್ತದೆ. ಮಗುವಿನಿಂದ ಬಳಸಲ್ಪಡುವ ಯಾವುದೇ ಸಿಸ್ಟಮ್ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಬಿಡುಗಡೆ ಮಾಡಲಾಗುತ್ತದೆ.

ಪಿಡ್ನ ಮೌಲ್ಯವು ಒಂದು ಆಗಿರಬಹುದು:

<-1

ಇದು ಯಾವುದೇ ಪ್ರಕ್ರಿಯೆ ಸಮೂಹ ID ಯನ್ನು ಪಿಡ್ನ ಸಂಪೂರ್ಣ ಮೌಲ್ಯಕ್ಕೆ ಸಮನಾಗಿರುವ ಯಾವುದೇ ಮಗುವಿನ ಪ್ರಕ್ರಿಯೆಗಾಗಿ ಕಾಯುವುದಾಗಿದೆ.

-1

ಇದು ಯಾವುದೇ ಮಗುವಿನ ಪ್ರಕ್ರಿಯೆಗೆ ಕಾಯುವ ಅರ್ಥ; ಇದು ಪ್ರದರ್ಶನವನ್ನು ನಿರೀಕ್ಷಿಸುವ ಅದೇ ನಡವಳಿಕೆಯಾಗಿದೆ.

0

ಇದು ಪ್ರಕ್ರಿಯೆ ಸಮೂಹ ID ಯ ಯಾವುದೇ ಪ್ರಕ್ರಿಯೆಗೆ ಹೋಲಿಸಿದರೆ ಯಾವುದೇ ಮಗುವಿನ ಪ್ರಕ್ರಿಯೆಗೆ ಕಾಯುವುದಾಗಿದೆ.

> 0

ಇದರ ಪ್ರಕ್ರಿಯೆ ID ಯು ಮಗುವಿನ ಮೌಲ್ಯಕ್ಕೆ ಸಮನಾಗಿರುತ್ತದೆಂದು ನಿರೀಕ್ಷಿಸುವ ಅರ್ಥ.

ಆಯ್ಕೆಗಳ ಮೌಲ್ಯವು ಕೆಳಗಿನ ಸ್ಥಿರಾಂಕಗಳ ಶೂನ್ಯ ಅಥವಾ ಹೆಚ್ಚಿನದು:

ವಿನೋನ್ಗ್

ಯಾವುದೇ ಮಗು ನಿರ್ಗಮಿಸದಿದ್ದರೆ ತಕ್ಷಣವೇ ಮರಳಲು ಇದರ ಅರ್ಥ.

ಮುಂದೂಡಲಾಗಿದೆ

ಇದು ನಿಲ್ಲಿಸಿದ ಮಕ್ಕಳನ್ನು ಹಿಂದಿರುಗಿಸುವುದು ಮತ್ತು ಅವರ ಸ್ಥಿತಿಯನ್ನು ವರದಿ ಮಾಡಿಲ್ಲ ಎಂದರ್ಥ.

(ಲಿನಕ್ಸ್ ಮಾತ್ರ ಆಯ್ಕೆಗಳನ್ನು, ಕೆಳಗೆ ನೋಡಿ.)

ಸ್ಥಿತಿಯು NULL ಅಲ್ಲದಿದ್ದರೆ , ಸ್ಥಿತಿಯಿಂದ ಸೂಚಿಸಲಾದ ಸ್ಥಳದಲ್ಲಿ ನಿರೀಕ್ಷಿಸಿ ಅಥವಾ ನಿರೀಕ್ಷಣಾ ಸ್ಟೋರ್ ಸ್ಥಿತಿ ಮಾಹಿತಿ.

ಈ ಸ್ಥಿತಿಯನ್ನು ಕೆಳಗಿನ ಮ್ಯಾಕ್ರೊಗಳೊಂದಿಗೆ ಮಾಪನ ಮಾಡಬಹುದು (ಈ ಮ್ಯಾಕ್ರೋಗಳು ಸ್ಟ್ಯಾಟ್ ಬಫರ್ ( ಇಂಟ್ ) ವಾದದಂತೆ ತೆಗೆದುಕೊಳ್ಳುತ್ತವೆ --- ಬಫರ್ಗೆ ಪಾಯಿಂಟರ್ ಆಗಿಲ್ಲ):

WIFEXITED ( ಸ್ಥಿತಿ )

ಮಗು ಸಾಮಾನ್ಯವಾಗಿ ನಿರ್ಗಮಿಸಿದರೆ ಶೂನ್ಯೇತರವಾಗಿರುತ್ತದೆ.

WEXITSTATUS ( ಸ್ಥಿತಿ )

ಕೊನೆಗೊಳ್ಳುವ ಮಗುವಿನ ರಿಟರ್ನ್ ಕೋಡ್ನ ಕನಿಷ್ಠ ಎಂಟು ಬಿಟ್ಗಳಿಗೆ ಮೌಲ್ಯಮಾಪನ ಮಾಡುತ್ತದೆ, ಇದು ನಿರ್ಗಮಿಸಲು ಕರೆಗೆ ವಾದವನ್ನು ಹೊಂದಿಸಬಹುದಾಗಿದೆ ( ಅಥವಾ ಮುಖ್ಯ ಪ್ರೋಗ್ರಾಂನಲ್ಲಿ ರಿಟರ್ನ್ ಸ್ಟೇಟ್ಮೆಂಟ್ಗೆ ಸಂಬಂಧಿಸಿದ ವಾದದಂತೆ ) . WIFEXITED ಶೂನ್ಯವನ್ನೇ ಹಿಂತಿರುಗಿಸಿದರೆ ಮಾತ್ರ ಈ ಮ್ಯಾಕ್ರೋವನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಬಹುದು.

WIFSIGNALED ( ಸ್ಥಿತಿ )

ಹಿಡಿದಿಲ್ಲದ ಸಿಗ್ನಲ್ನ ಕಾರಣದಿಂದಾಗಿ ಮಗುವಿನ ಪ್ರಕ್ರಿಯೆಯಿಂದ ಹೊರಬಂದಾಗ ನಿಜವಾದ ಮರಳುತ್ತದೆ.

WTERMSIG ( ಸ್ಥಿತಿ )

ಮಗುವಿನ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಅಂತ್ಯಗೊಳಿಸಲು ಕಾರಣವಾದ ಸಂಕೇತದ ಸಂಖ್ಯೆಯನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ. WIFSIGNALED ಶೂನ್ಯವನ್ನೇ ಹಿಂತಿರುಗಿಸಿದರೆ ಮಾತ್ರ ಈ ಮ್ಯಾಕ್ರೋವನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಬಹುದು.

ವಿಸ್ಟಾಪ್ಡ್ ( ಸ್ಥಿತಿ )

ರಿಟರ್ನ್ ಉಂಟಾಗುವ ಮಗುವಿನ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪ್ರಸ್ತುತ ನಿಲ್ಲಿಸಿದರೆ ನಿಜವಾದ ಮರಳುತ್ತದೆ; ಕರೆ ಮಾಡಿದ ಬಳಿಕ ವೂಂಟ್ರೆಸ್ಡ್ ಮಾಡಿದರೆ ಮಾತ್ರ ಇದು ಸಾಧ್ಯ.

WSTOPSIG ( ಸ್ಥಿತಿ )

ಮಗುವು ನಿಲ್ಲಿಸಲು ಕಾರಣವಾದ ಸಂಕೇತದ ಸಂಖ್ಯೆಯನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ. WIFSTOPPED ಶೂನ್ಯವನ್ನೇ ಹಿಂತಿರುಗಿಸಿದರೆ ಮಾತ್ರ ಈ ಮ್ಯಾಕ್ರೋವನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಬಹುದು.

ಯುನಿಕ್ಸ್ನ ಕೆಲವು ಆವೃತ್ತಿಗಳು (ಉದಾಹರಣೆಗೆ ಲಿನಕ್ಸ್, ಸೋಲಾರಿಸ್, ಆದರೆ ಎಐಎಕ್ಸ್, ಸನ್ಓಎಸ್ ಅಲ್ಲ) ಮಗುವಿನ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಕೋರ್ ಎಸೆಯಲಾಗಿದೆಯೆ ಎಂದು ಪರೀಕ್ಷಿಸಲು ಸ್ಥೂಲವಾದ WCOREDUMP ( ಸ್ಥಿತಿಯನ್ನು ) ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ. #ifdef WCOREDUMP ... #endif ನಲ್ಲಿ ಮಾತ್ರ ಇದನ್ನು ಬಳಸಿಕೊಳ್ಳಿ.

ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ

ನಿರ್ಗಮಿಸಿದ ಮಗುವಿನ ಪ್ರಕ್ರಿಯೆ ID, ಅಥವಾ WNOHANG ಅನ್ನು ಶೂನ್ಯವಾಗಿ ಬಳಸಲಾಗಿದ್ದರೆ ಮತ್ತು ಯಾವುದೇ ಮಗು ಲಭ್ಯವಿಲ್ಲ, ಅಥವಾ -1 ತಪ್ಪು (ಈ ಸಂದರ್ಭದಲ್ಲಿ ದೋಷವು ಸರಿಯಾದ ಮೌಲ್ಯಕ್ಕೆ ಹೊಂದಿಸಲ್ಪಡುತ್ತದೆ).

ದೋಷಗಳು

ECHILD

ಪ್ರಕ್ರಿಯೆಯು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದಲ್ಲಿ ಪಿಡ್ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ ಅಥವಾ ಕರೆ ಪ್ರಕ್ರಿಯೆಯ ಮಗು ಅಲ್ಲ. (SIGCHLD ಗಾಗಿ SIG_IGN ಗೆ ಹೊಂದಿಸಿದ್ದರೆ ಇದು ಒಬ್ಬರ ಸ್ವಂತ ಮಗುವಿಗೆ ಸಂಭವಿಸಬಹುದು. ತ್ರೆಡ್ಗಳ ಬಗ್ಗೆ ಲಿನಕ್ಸ್ ಟಿಪ್ಪಣಿಗಳು ವಿಭಾಗವನ್ನೂ ಸಹ ನೋಡಿ.)

EINVAL

ಆಯ್ಕೆಗಳ ಆರ್ಗ್ಯುಮೆಂಟ್ ಅಮಾನ್ಯವಾಗಿದ್ದರೆ.

EINTR

ವಿನೋನ್ಗ್ ಅನ್ನು ಹೊಂದಿಸದಿದ್ದರೆ ಮತ್ತು ಅನಿರ್ಬಂಧಿತ ಸಿಗ್ನಲ್ ಅಥವಾ SIGCHLD ಸಿಕ್ಕಿಬಿದ್ದಿದ್ದರೆ.