[go: up one dir, main page]

File: process.h

package info (click to toggle)
cctools 9.9-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 44,624 kB
  • sloc: ansic: 192,539; python: 20,827; cpp: 20,199; sh: 11,719; perl: 4,106; xml: 3,688; makefile: 1,224
file content (70 lines) | stat: -rw-r--r-- 2,349 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/*
Copyright (C) 2008- The University of Notre Dame
This software is distributed under the GNU General Public License.
See the file COPYING for details.
*/

#ifndef PROCESS_H
#define PROCESS_H

#include <sys/time.h>
#include <sys/types.h>
#include <sys/resource.h>
#include <sys/wait.h>

/** @file process.h
Provides a higher level interface to finding information about complete processes.
Useful as a replacement for <tt>wait</tt>, <tt>waitpid</tt> and similar calls,
which do not allow the caller to check for completion without permanently removing
the completion notice.
<p>
Call @ref process_pending to see if there is a recently completed process,
@ref process_wait to wait for completion with a timeout, and @ref process_putback
to put the completion back into the queue.
*/

/** Describes a completed process.
Each element of this structure is the same as returned by Unix wait4().
@see process_wait
*/

struct process_info {
	pid_t pid;	      /**< The process ID of a complete process. */
	int status;	      /**< The exit status of the process. */
	struct rusage rusage; /**< The resource usage of the process. */
};

/** Wait for a process to complete, and return its status.
Wait for up to timeout seconds for a child process to complete.
If a process has completed, its status will be returned in a @ref process_info
structure.  The caller may either call <tt>free</tt> to release the structure,
or may return it via @ref process_putback in order to allow another caller to retrieve it.
@param timeout The time, in seconds to wait for a child to complete.  If zero, do not wait at all.
@return A @ref process_info structure describing the child process status, or null if no
process completed in the available time.
*/

struct process_info *process_wait(int timeout);

/** Wait for a specific process to complete and return its status.
Like @ref process_wait, but waits for a specific pid.
*/

struct process_info *process_waitpid(pid_t pid, int timeout);

/** Detect if a child process has completed.
If so, its status may be obtained without delay by calling @ref process_wait .
@return True if a child process has completed.
*/

int process_pending();

/** Return a process_info structure to the queue.
@param p A @ref process_info structure returned by @ref process_wait.
*/

void process_putback(struct process_info *p);



#endif