ਲੀਨਕਸ ਕਮਾਂਡ ਲਓ - ਉਡੀਕ ਕਰੋ

ਨਾਮ

ਉਡੀਕੋ, waitpid - ਪ੍ਰਕਿਰਿਆ ਦੇ ਸਮਾਪਤੀ ਦੀ ਉਡੀਕ ਕਰੋ

ਸੰਖੇਪ

#include
#include

pid_t ਉਡੀਕ (int * status );
pid_t waitpid (pid_t pid , int * status , int ਚੋਣ );

ਵਰਣਨ

ਉਡੀਕ ਫੰਕਸ਼ਨ ਮੌਜੂਦਾ ਪ੍ਰਕਿਰਿਆ ਦੇ ਚੱਲਣ ਨੂੰ ਮੁਅੱਤਲ ਕਰ ਦਿੰਦੀ ਹੈ ਜਦੋਂ ਤੱਕ ਕਿਸੇ ਬੱਚੇ ਵਲੋਂ ਬਾਹਰ ਨਹੀਂ ਨਿਕਲਦਾ, ਜਾਂ ਜਦੋਂ ਤੱਕ ਸਿਗਨਲ ਨਹੀਂ ਪਹੁੰਚਦਾ ਹੈ, ਜਿਸਦੀ ਕਾਰਵਾਈ ਮੌਜੂਦਾ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਖਤਮ ਕਰਨਾ ਹੈ ਜਾਂ ਇੱਕ ਸੰਕੇਤ ਹੈਂਡਲਿੰਗ ਫੰਕਸ਼ਨ ਨੂੰ ਕਾਲ ਕਰਨਾ ਹੈ. ਜੇ ਇੱਕ ਬੱਚਾ ਪਹਿਲਾਂ ਹੀ ਕਾਲ ਦੇ ਸਮੇਂ (ਇੱਕ "ਜੂਮਬੀ" ਪ੍ਰਕਿਰਿਆ ਦੀ ਇੱਕ ਪ੍ਰਕਿਰਿਆ) ਤੋਂ ਬਾਹਰ ਹੋ ਗਈ ਹੈ, ਤਾਂ ਫੰਕਸ਼ਨ ਉਸੇ ਵੇਲੇ ਆਉਂਦਾ ਹੈ. ਬੱਚੇ ਦੁਆਰਾ ਵਰਤੇ ਗਏ ਕੋਈ ਵੀ ਸਿਸਟਮ ਸਰੋਤ ਮੁਕਤ ਕੀਤੇ ਜਾਂਦੇ ਹਨ.

ਉਡੀਕਪਿੱਡ ਫੰਕਸ਼ਨ ਮੌਜੂਦਾ ਪ੍ਰਕਿਰਿਆ ਦੇ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਨੂੰ ਮੁਅੱਤਲ ਕਰ ਦਿੰਦੀ ਹੈ ਜਦੋਂ ਤੱਕ ਕਿ pid ਆਰਗੂਮੈਂਟ ਦੁਆਰਾ ਨਿਰਦਿਸ਼ਟ ਕੀਤੇ ਇੱਕ ਬੱਚੇ ਨੂੰ ਬੰਦ ਨਹੀਂ ਕੀਤਾ ਜਾਂਦਾ, ਜਾਂ ਜਦੋਂ ਤੱਕ ਸਿਗਨਲ ਨਹੀਂ ਪਹੁੰਚਦਾ, ਜਿਸਦੀ ਕਾਰਵਾਈ ਮੌਜੂਦਾ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਖਤਮ ਕਰਨਾ ਜਾਂ ਸਿਗਨਲ ਹੈਂਡਲਿੰਗ ਫੰਕਸ਼ਨ ਨੂੰ ਕਾਲ ਕਰਨਾ ਹੈ. ਜੇ ਪੀਡ ਦੁਆਰਾ ਬੇਨਤੀ ਕੀਤੇ ਗਏ ਬੱਚੇ ਨੂੰ ਕਾਲ ਦੇ ਸਮੇਂ (ਇੱਕ "ਜੂਮਬੀ" ਪ੍ਰਕਿਰਿਆ ਕਿਹਾ ਜਾਂਦਾ ਹੈ) ਤੋਂ ਪਹਿਲਾਂ ਹੀ ਬੰਦ ਹੋ ਗਿਆ ਹੈ, ਫੰਕਸ਼ਨ ਉਸੇ ਵੇਲੇ ਆਉਂਦਾ ਹੈ. ਬੱਚੇ ਦੁਆਰਾ ਵਰਤੇ ਗਏ ਕੋਈ ਵੀ ਸਿਸਟਮ ਸਰੋਤ ਮੁਕਤ ਕੀਤੇ ਜਾਂਦੇ ਹਨ.

ਪਿਡ ਦਾ ਮੁੱਲ ਇਹ ਹੋ ਸਕਦਾ ਹੈ:

<-1

ਜਿਸਦਾ ਮਤਲਬ ਹੈ ਕਿਸੇ ਵੀ ਬਾਲ ਕਾਰਜ ਦੀ ਉਡੀਕ ਕਰਨੀ, ਜਿਸਦੀ ਪ੍ਰਕਿਰਿਆ ਗਰੁੱਪ ਆਈਡੀ ਪਿਡ ਦੇ ਅਸਲੀ ਮੁੱਲ ਦੇ ਬਰਾਬਰ ਹੈ.

-1

ਜਿਸਦਾ ਮਤਲਬ ਹੈ ਕਿਸੇ ਵੀ ਬੱਚੇ ਦੀ ਪ੍ਰਕਿਰਿਆ ਦੀ ਉਡੀਕ ਕਰਨੀ; ਇਹ ਉਹੀ ਵਿਵਹਾਰ ਹੈ ਜੋ ਪ੍ਰਦਰਸ਼ਨੀ ਦੀ ਉਡੀਕ ਕਰਦਾ ਹੈ.

0

ਜਿਸਦਾ ਮਤਲਬ ਹੈ ਕਿਸੇ ਵੀ ਬਾਲ ਕਾਰਜ ਦੀ ਉਡੀਕ ਕਰਨੀ, ਜਿਸਦੀ ਪ੍ਰਕਿਰਿਆ ਗਰੁੱਪ ਆਈਡੀ ਕਾਲਿੰਗ ਪ੍ਰਕਿਰਿਆ ਦੇ ਬਰਾਬਰ ਹੈ.

> 0

ਜਿਸਦਾ ਮਤਲਬ ਉਸ ਬੱਚੇ ਦੀ ਉਡੀਕ ਕਰਨੀ ਹੈ ਜਿਸਦੀ ਪ੍ਰਕਿਰਿਆ ID pid ਦੇ ਮੁੱਲ ਦੇ ਬਰਾਬਰ ਹੈ.

ਵਿਕਲਪਾਂ ਦਾ ਮੁੱਲ ਇੱਕ ਜਾਂ ਜ਼ੀਰੋ ਜਾਂ ਹੇਠਲੇ ਰਕਬੇ ਵਿੱਚੋਂ ਜਿਆਦਾ ਹੈ:

WNOHANG

ਜਿਸਦਾ ਮਤਲਬ ਤੁਰੰਤ ਵਾਪਸ ਜਾਣਾ ਹੈ ਜੇ ਕੋਈ ਬੱਚਾ ਨਿਕਾਸ ਨਾ ਕੀਤਾ ਹੋਵੇ.

ਵਿੰਟਰਡ

ਜਿਸਦਾ ਰੋਕਥਾਮ ਵਾਲੇ ਬੱਚਿਆਂ ਲਈ ਵਾਪਸ ਆਉਣ ਦਾ ਵੀ ਮਤਲਬ ਹੈ, ਅਤੇ ਜਿਨ੍ਹਾਂ ਦੀ ਹਾਲਤ ਦੀ ਰਿਪੋਰਟ ਨਹੀਂ ਕੀਤੀ ਗਈ ਹੈ.

(ਲੀਨਕਸ-ਬਦਲਵੇਂ ਵਿਕਲਪਾਂ ਲਈ, ਹੇਠਾਂ ਦੇਖੋ.)

ਜੇ ਹਾਲਤ ਨੁੱਲ ਨਹੀਂ ਹੈ, ਤਾਂ ਸਥਿਤੀ ਦੁਆਰਾ ਦਰਸਾਈ ਗਈ ਸਥਿਤੀ ਵਿੱਚ ਉਡੀਕ ਜਾਂ ਉਡੀਕ ਲਈ ਵੇਚ ਸਟੋਰ ਸਥਿਤੀ ਦੀ ਜਾਣਕਾਰੀ ਨਹੀਂ ਹੈ.

ਇਹ ਸਥਿਤੀ ਨੂੰ ਹੇਠ ਦਿੱਤੇ ਮਾਈਕਰੋਸ ਦੇ ਨਾਲ ਮੁਲਾਂਕਣ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ (ਇਹ ਮੈਕਰੋ ਇੱਕ ਸਟੇਟ ਬਫਰ (ਇੱਕ ਇੰਟ ) ਨੂੰ ਇੱਕ ਆਰਗੂਲੇਸ਼ਨ ਦੇ ਤੌਰ ਤੇ ਲੈਂਦੇ ਹਨ --- ਬਫਰ ਲਈ ਇੱਕ ਪੁਆਇੰਟਰ ਨਹੀਂ!):

WIFEXITED ( ਸਥਿਤੀ )

ਗੈਰ-ਜ਼ੀਰੋ ਹੈ ਜੇਕਰ ਬੱਚੇ ਨੇ ਆਮ ਤੌਰ ਤੇ ਬੰਦ ਹੋ ਗਿਆ ਹੋਵੇ

WEXITSTATUS ( ਸਥਿਤੀ )

ਬੱਚੇ ਦੇ ਰਿਟਰਨ ਕੋਡ ਦੇ ਆਖਰੀ ਮਹੱਤਵਪੂਰਨ ਅੱਠ ਬਿੱਲਾਂ ਦਾ ਮੁਲਾਂਕਣ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਜੋ ਬੰਦ ਹੋ ਜਾਣ ਦੇ ਕਾਲ ਦੇ ਆਰਗੂਮਿੰਟ ਦੇ ਤੌਰ ਤੇ ਜਾਂ ਮੁੱਖ ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ ਵਾਪਸੀ ਕਥਨ ਲਈ ਦਲੀਲ ਦੇ ਤੌਰ ਤੇ ਨਿਰਧਾਰਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ. ਇਹ ਮੈਕਰੋ ਦਾ ਮੁਲਾਂਕਣ ਸਿਰਫ ਉਦੋਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਜੇ WIFEXITED ਨੇ ਗੈਰ-ਜ਼ੀਰੋ ਵਾਪਸ ਕਰ ਦਿੱਤਾ ਹੋਵੇ.

WIFSIGNALED ( ਸਥਿਤੀ )

ਰਿਟਰਨ ਸੱਚਮੁੱਚ ਦਿੰਦਾ ਹੈ ਜੇ ਬੱਚਾ ਪ੍ਰਕਿਰਿਆ ਇਕ ਸਿਗਨਲ ਕਾਰਨ ਬੰਦ ਹੋ ਜਾਂਦੀ ਹੈ ਜੋ ਫੜਿਆ ਨਹੀਂ ਗਿਆ ਸੀ.

WTERMSIG ( ਸਥਿਤੀ )

ਸੰਕੇਤ ਦੀ ਗਿਣਤੀ ਵਾਪਸ ਕਰਦਾ ਹੈ ਜਿਸ ਨਾਲ ਬੱਚੇ ਦੀ ਪ੍ਰਕਿਰਿਆ ਖਤਮ ਹੋ ਗਈ. ਇਹ ਮੈਕਰੋ ਦਾ ਮੁਲਾਂਕਣ ਸਿਰਫ ਉਦੋਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਜੇ WIFSIGNALED ਨੇ ਗੈਰ-ਜ਼ੀਰੋ ਵਾਪਸ ਕਰ ਦਿੱਤਾ ਹੋਵੇ.

WIFSTOPPED ( ਸਥਿਤੀ )

ਰਿਟਰਨ ਸੱਚ ਹੈ ਜੇ ਬੱਚੇ ਦੀ ਪ੍ਰਕਿਰਿਆ ਜਿਸ ਨਾਲ ਰਿਟਰਨ ਚਲਦੀ ਹੈ, ਇਸ ਵੇਲੇ ਬੰਦ ਹੋ ਚੁੱਕੀ ਹੈ; ਇਹ ਕੇਵਲ ਤਾਂ ਹੀ ਸੰਭਵ ਹੈ ਜੇ ਕਾੱਲ WUNTRACED ਦੁਆਰਾ ਕੀਤੀ ਗਈ ਸੀ .

WSTOPSIG ( ਸਥਿਤੀ )

ਸੰਕੇਤ ਦੀ ਗਿਣਤੀ ਵਾਪਸ ਕਰਦਾ ਹੈ ਜਿਸ ਨਾਲ ਬੱਚੇ ਨੂੰ ਰੋਕਿਆ ਗਿਆ. ਇਹ ਮੈਕਰੋ ਦਾ ਮੁਲਾਂਕਣ ਕੇਵਲ ਤਾਂ ਹੀ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਜੇ WIFSTOPPED ਨੇ ਗੈਰ-ਜ਼ੀਰੋ ਵਾਪਸ ਕਰ ਦਿੱਤਾ ਹੋਵੇ.

ਯੂਨੀਕਸ ਦੇ ਕੁਝ ਵਰਜਨਾਂ (ਜਿਵੇਂ ਕਿ ਲੀਨਕਸ, ਸੋਲਰਿਸ, ਪਰ ਏਆਈਐਸ , ਸਨOS ਨਹੀਂ) ਨੇ ਮੈਟਰੋ WCOREDUMP ( ਸਥਿਤੀ ) ਨੂੰ ਇਹ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨ ਲਈ ਵੀ ਪ੍ਰੀਖਿਆ ਦਿੱਤੀ ਹੈ ਕਿ ਕੀ ਬਾਲ ਪ੍ਰਕਿਰਿਆ ਡੰਪ ਕੋਰ ਹੈ. ਸਿਰਫ ਇਸ ਨੂੰ #ifdef WCOREDUMP ... #endif ਵਿਚ ਨੱਥੀ ਕਰੋ.

ਵਾਪਸੀ ਮੁੱਲ

ਜੇ ਬੱਚਾ ਕੋਈ ਬੱਚਾ ਉਪਲਬਧ ਨਹੀਂ ਸੀ ਜਾਂ ਕੋਈ ਬੱਚਾ ਉਪਲਬਧ ਨਹੀਂ ਸੀ ਤਾਂ ਜਾਂ ਇਸ ਤੋਂ ਬਾਅਦ ਜ਼ੀਰੋ ਤੋਂ ਚੱਲਣ ਵਾਲੇ ਬੱਚੇ ਦੀ ਪ੍ਰਕਿਰਿਆ ਆਈਡੀ, ਜਾਂ ਗਲਤੀ ਹੋਣ ਤੇ -1 (ਜਿਸ ਸਥਿਤੀ ਵਿੱਚ ਕਿਸੇ ਗਲਤ ਕੀਮਤ 'ਤੇ ਨਿਰਧਾਰਤ ਕੀਤੀ ਗਈ ਹੈ).

ਗਲਤੀਆਂ

ECHILD

ਜੇ ਪ੍ਰਕਿਰਿਆ ਅੰਦਰ ਦਰਜ ਹੈ pid ਮੌਜੂਦ ਨਹੀਂ ਹੈ ਜਾਂ ਕਾਲਿੰਗ ਪ੍ਰਕਿਰਿਆ ਦਾ ਬੱਚਾ ਨਹੀਂ ਹੈ. (ਜੇ SIGCHLD ਲਈ ਕਾਰਵਾਈ SIG_IGN ਤੇ ਕੀਤੀ ਗਈ ਹੈ ਤਾਂ ਇਹ ਆਪਣੇ ਖੁਦ ਦੇ ਬੱਚੇ ਲਈ ਵਾਪਰ ਸਕਦਾ ਹੈ. ਥ੍ਰੈਡਸ ਬਾਰੇ ਲੀਨਕਸ ਨੋਟਸ ਸੈਕਸ਼ਨ ਵੀ ਵੇਖੋ.)

EINVAL

ਜੇ ਵਿਕਲਪ ਆਰਗੂਮੈਂਟ ਅਯੋਗ ਸੀ.

EINTR

ਜੇ WNOHANG ਸੈਟ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਸੀ ਅਤੇ ਇੱਕ ਅਨਬਲੌਕਡ ਸਿਗਨਲ ਜਾਂ ਇੱਕ SIGCHLD ਫੜਿਆ ਗਿਆ ਸੀ