2024年1月15日发(作者:)

unsigned short shm_nattch; unsigned short shm_unused; void *shm_unused2; void *shm_unused3;};struct tms{ clock_t tms_utime; clock_t tms_stime; clock_t tms_cutime; clock_t tms_cstime;};/* Structure used for argument to `semop' to describe operations. */struct sembuf{ unsigned short int sem_num; /* semaphore number */ short int sem_op; /* semaphore operation */ short int sem_flg; /* operation flag */};int semop(int semid, struct sembuf *sops, unsigned nsops); struct msginfo { int msgpool; /* Size in kibibytes of buffer pool used to hold message data; unused within kernel */ int msgmap; /* Maximum number of entries in message map; unused within kernel */ int msgmax; /* Maximum number of bytes that can be written in a single message */ int msgmnb; /* Maximum number of bytes that can be written to queue; used to initialize msg_qbytes during queue creation (msgget(2)) */ int msgmni; /* Maximum number of message queues */ int msgssz; /* Message segment size; unused within kernel */ int msgtql; /* Maximum number of messages on all queues in system; unused within kernel */ unsigned short int msgseg; /* Maximum number of segments; unused within kernel */ };

struct msqid_ds { struct ipc_perm msg_perm; /* Ownership and permissions */ time_t msg_stime; /* Time of last msgsnd(2) */ time_t msg_rtime; /* Time of last msgrcv(2) */ time_t msg_ctime; /* Time of last change */ unsigned long __msg_cbytes; /* Current number of bytes in queue (nonstandard) */ msgqnum_t msg_qnum; /* Current number of messages in queue */ msglen_t msg_qbytes; /* Maximum number of bytes allowed in queue */ pid_t msg_lspid; /* PID of last msgsnd(2) */ pid_t msg_lrpid; /* PID of last msgrcv(2) */ };// struct ipc_perm {// key_t __key; /* Key supplied to msgget(2) */// uid_t uid; /* Effective UID of owner */// gid_t gid; /* Effective GID of owner */// uid_t cuid; /* Effective UID of creator */// gid_t cgid; /* Effective GID of creator */// unsigned short mode; /* Permissions */// unsigned short __seq; /* Sequence number */// };

int msgctl(int msqid, int cmd, struct msqid_ds *buf);

int kill(pid_t, int);unsigned sleep(int);unsigned usleep(int);pid_t wait (int *);pid_t fork();pid_t getpid();int pipe(int *fd);int getpgrp();int killpg(int, int);int gettimeofday(struct timeval *tp, void *tzp);int random();

void srandom(unsigned int seed);key_t ftok(const char *path_name, int proj_id);int shmget(key_t key, size_t size, int shmflg);int shmctl(int shmid, int cmd, struct shmid_ds *buf);void *shmat(int shmid, const void *shmaddr, int shmflg);int shmdt(const void *shmaddr);int msgget(key_t key, int msgflg);int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);size_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg);void *dlopen(const char *filename, int flag);int dlclose(void *handle);char *dlerror();void *dlsym(void *hadle, const char *symbol);unsigned int alarm(unsigned int seconds);// int dup(int oldfd);// int dup2(int oldfd, int newfd);int mkdir(const char *path, int mode);char *strsep(char **stringp, const char *delim);#define dup2 _dup2#define open _open#define read _read#define close _close#define write _writetypedef void (*sighandler_t)(int);sighandler_t sigset(int sig, sighandler_t disp);int sighold(int sig);int sigrelse(int sig);int sigignore(int sig);clock_t times(struct tms *buf);#ifdef __cplusplus}#endif#define snprintf _snprintf#define popen _popen#define pclose _pclose//信号常量/*const int SIGHUP = 15;const int SIGQUIT = 15;const int SIGPWR = 15;const int SIGUSR2 = 15;const int SIGALRM = 15;const int SIGUSR1 = 10;

const int SIGURG = 30;

const int SIGCHLD = 17;const int SIGPIPE = 13;*/#ifndef RTLD_LAZY#define RTLD_LAZY 1#endif#ifndef EINTR#define EINTR 4#endif#define SIGHUP 1#define SIGINT 2#define SIGQUIT 3#define SIGILL 4#define SIGTRAP 5#ifndef SIGABRT#define SIGABRT 6#endif#define SIGIOT 6#define SIGBUS 7#define SIGEPE 8#define SIGKILL 9#define SIGUSR1 10

#ifndef O_NOCTTY#define O_NOCTTY 00000400 /* not fcntl */#endif#ifndef O_TRUNC#define O_TRUNC 00001000 /* not fcntl */#endif#ifndef O_APPEND#define O_APPEND 00002000#endif#ifndef O_NONBLOCK#define O_NONBLOCK 00004000#endif#ifndef O_DSYNC#define O_DSYNC 00010000 /* used to be O_SYNC, see below */#endif#ifndef FASYNC#define FASYNC 00020000 /* fcntl, for BSD compatibility */#endif#ifndef O_DIRECT#define O_DIRECT 00040000 /* direct disk access hint */#endif#ifndef O_LARGEFILE#define O_LARGEFILE 00100000#endif#ifndef O_DIRECTORY#define O_DIRECTORY 00200000 /* must be a directory */#endif#ifndef O_NOFOLLOW#define O_NOFOLLOW 00400000 /* don't follow links */#endif#ifndef O_NOATIME#define O_NOATIME 01000000#endif#ifndef O_CLOEXEC#define O_CLOEXEC 02000000 /* set close_on_exec */#endif/* * Before Linux 2.6.33 only O_DSYNC semantics were implemented, but using * the O_SYNC flag. We continue to use the existing numerical value * for O_DSYNC semantics now, but using the correct symbolic name for it. * This new value is used to request true Posix O_SYNC semantics. It is * defined in this strange way to make sure applications compiled against * new headers get at least O_DSYNC semantics on older kernels. * * This has the nice side-effect that we can simply test for O_DSYNC * wherever we do not care if O_DSYNC or O_SYNC is used. * * Note: __O_SYNC must never be used directly. */#ifndef O_SYNC#define __O_SYNC 04000000#define O_SYNC (__O_SYNC|O_DSYNC)#endif#ifndef O_PATH#define O_PATH 010000000#endif#ifndef O_NDELAY#define O_NDELAY O_NONBLOCK#endif#define F_DUPFD 0 /* dup */#define F_GETFD 1 /* get close_on_exec */#define F_SETFD 2 /* set/clear close_on_exec */#define F_GETFL 3 /* get file->f_flags */#define F_SETFL 4 /* set file->f_flags */#ifndef F_GETLK#define F_GETLK 5#define F_SETLK 6#define F_SETLKW 7#endif#ifndef F_SETOWN#define F_SETOWN 8 /* for sockets. */#define F_GETOWN 9 /* for sockets. */#endif#ifndef F_SETSIG#define F_SETSIG 10 /* for sockets. */#define F_GETSIG 11 /* for sockets. */#endif#ifndef CONFIG_64BIT#ifndef F_GETLK64

#define F_GETLK64 12 /* using 'struct flock64' */#define F_SETLK64 13#define F_SETLKW64 14#endif#endif#ifndef F_SETOWN_EX#define F_SETOWN_EX 15#define F_GETOWN_EX 16#endif#ifndef F_GETOWNER_UIDS#define F_GETOWNER_UIDS 17#endif#define F_OWNER_TID 0#define F_OWNER_PID 1#define F_OWNER_PGRP 2/* for F_[GET|SET]FL */#define FD_CLOEXEC 1 /* actually anything with low bit set goes *//* for posix fcntl() and lockf() */#ifndef F_RDLCK#define F_RDLCK 0#define F_WRLCK 1#define F_UNLCK 2#endifstruct flock { short l_type; short l_whence; size_t l_start; size_t l_len; size_t l_pid;};/* for old implementation of bsd flock () */#ifndef F_EXLCK#define F_EXLCK 4 /* or 3 */#define F_SHLCK 8 /* or 4 */#endif/* operations for bsd flock(), also used by the kernel implementation */#define LOCK_SH 1 /* shared lock */#define LOCK_EX 2 /* exclusive lock */#define LOCK_NB 4 /* or'd with one of the above to prevent blocking */#define LOCK_UN 8 /* remove lock */#define LOCK_MAND 32 /* This is a mandatory flock ... */#define LOCK_READ 64 /* which allows concurrent read operations */#define LOCK_WRITE 128 /* which allows concurrent write operations */#define LOCK_RW 192 /* which allows concurrent read & write ops */#define F_LINUX_SPECIFIC_BASE 1024#endif /* _ASM_GENERIC_FCNTL_H */#else#include #include #include #include #include #ifdef _XOPEN_SOURCE#include

#endif#include #include #include #include #include #include #include #include #include #include #include #include

# ifdef _XOPEN_SOURCE_EXTENDED# include # endif#include #endif //WIN32#define XML_INDEX_TEST 1#define Sleep SleepCustom#endif //__HCH_COMPLIE_ON_WIN__