lib/process.c
/* Executes periodic maintenance activities required by the process module. */
Executes periodic maintenance activities required by the process module.
Executes periodic maintenance activities required by the process module .
void
process_run(void)
{
#ifndef _WIN32
    char buf[_POSIX_PIPE_BUF];
    if (!ovs_list_is_empty(&all_processes) && read(fds[0], buf, sizeof buf) > 0) {
        struct process *p;
        LIST_FOR_EACH (p, node, &all_processes) {
            if (!p->exited) {
                int retval, status;
                do {
                    retval = waitpid(p->pid, &status, WNOHANG);
                } while (retval == -1 && errno == EINTR);
                if (retval == p->pid) {
                    p->exited = true;
                    p->status = status;
                } else if (retval < 0) {
                    VLOG_WARN("waitpid: %s", ovs_strerror(errno));
                    p->exited = true;
                    p->status = -1;
                }
            }
        }
    }
#endif
}
void process_run ( void ) { #ifndef _WIN32 char buf [ _POSIX_PIPE_BUF ] ; if ( ! ovs_list_is_empty ( & all_processes ) && read ( fds [ 0 ] , buf , sizeof buf ) > 0 ) { struct process * p ; LIST_FOR_EACH ( p , node , & all_processes ) { if ( ! p -> exited ) { int retval , status ; do { retval = waitpid ( p -> pid , & status , WNOHANG ) ; } while ( retval == -1 && errno == EINTR ) ; if ( retval == p -> pid ) { p -> exited = true ; p -> status = status ; } else if ( retval < 0 ) { VLOG_WARN ( " " , ovs_strerror ( errno ) ) ; p -> exited = true ; p -> status = -1 ; } } } } #endif }
Executes periodic maintenance activities required by the process module.
Executes periodic maintenance activities required by the process module .