asometh revision 3f54fd611f536639ec30dd53c48e5ec1897cc7d9
7f235c0d101d71224c8e498ac8f7fde1f98596c7dgaudet# aso method feature tests
f062ed7bd262a37a909dd77ce5fc23b446818823fielding
f062ed7bd262a37a909dd77ce5fc23b446818823fieldingaso fcntl note{ fcntl(F_SETLCK[W]) work }end link{
33bdcae1f7a1a65e351dda2a766a0cf28b1e695dnd #include <sys/types.h>
f062ed7bd262a37a909dd77ce5fc23b446818823fielding #include <unistd.h>
7f235c0d101d71224c8e498ac8f7fde1f98596c7dgaudet #include <fcntl.h>
7f235c0d101d71224c8e498ac8f7fde1f98596c7dgaudet
7f235c0d101d71224c8e498ac8f7fde1f98596c7dgaudet int main()
7f235c0d101d71224c8e498ac8f7fde1f98596c7dgaudet {
7f235c0d101d71224c8e498ac8f7fde1f98596c7dgaudet struct flock lock;
7f235c0d101d71224c8e498ac8f7fde1f98596c7dgaudet
f062ed7bd262a37a909dd77ce5fc23b446818823fielding lock.l_type = F_WRLCK;
7f235c0d101d71224c8e498ac8f7fde1f98596c7dgaudet lock.l_whence = SEEK_SET;
7f235c0d101d71224c8e498ac8f7fde1f98596c7dgaudet lock.l_start = 0;
7f235c0d101d71224c8e498ac8f7fde1f98596c7dgaudet lock.l_len = 1;
7f235c0d101d71224c8e498ac8f7fde1f98596c7dgaudet return fcntl(1, F_SETLKW, &lock) < 0;
7f235c0d101d71224c8e498ac8f7fde1f98596c7dgaudet }
7f235c0d101d71224c8e498ac8f7fde1f98596c7dgaudet}end
f062ed7bd262a37a909dd77ce5fc23b446818823fielding
f062ed7bd262a37a909dd77ce5fc23b446818823fieldingaso semaphore note{ semget semop semctl work }end link{
f062ed7bd262a37a909dd77ce5fc23b446818823fielding #include <sys/types.h>
f062ed7bd262a37a909dd77ce5fc23b446818823fielding #include <sys/stat.h>
f062ed7bd262a37a909dd77ce5fc23b446818823fielding #include <unistd.h>
f062ed7bd262a37a909dd77ce5fc23b446818823fielding #include <fcntl.h>
7f235c0d101d71224c8e498ac8f7fde1f98596c7dgaudet #include <sys/ipc.h>
f062ed7bd262a37a909dd77ce5fc23b446818823fielding #include <sys/sem.h>
f062ed7bd262a37a909dd77ce5fc23b446818823fielding
f062ed7bd262a37a909dd77ce5fc23b446818823fielding int main()
f062ed7bd262a37a909dd77ce5fc23b446818823fielding {
7f235c0d101d71224c8e498ac8f7fde1f98596c7dgaudet int id;
f062ed7bd262a37a909dd77ce5fc23b446818823fielding struct sembuf sem;
f062ed7bd262a37a909dd77ce5fc23b446818823fielding
64185f9824e42f21ca7b9ae6c004484215c031a7rbb if ((id = semget(IPC_PRIVATE, 16, IPC_CREAT|IPC_EXCL|S_IRUSR|S_IWUSR)) < 0)
7f235c0d101d71224c8e498ac8f7fde1f98596c7dgaudet return 1;
f062ed7bd262a37a909dd77ce5fc23b446818823fielding sem.sem_num = 0;
f062ed7bd262a37a909dd77ce5fc23b446818823fielding sem.sem_op = 1;
f062ed7bd262a37a909dd77ce5fc23b446818823fielding sem.sem_flg = 0;
f062ed7bd262a37a909dd77ce5fc23b446818823fielding if (semop(id, &sem, 1) < 0)
7f235c0d101d71224c8e498ac8f7fde1f98596c7dgaudet return 1;
f062ed7bd262a37a909dd77ce5fc23b446818823fielding if (semctl(id, 0, IPC_RMID) < 0)
f062ed7bd262a37a909dd77ce5fc23b446818823fielding return 1;
f062ed7bd262a37a909dd77ce5fc23b446818823fielding return 0;
f062ed7bd262a37a909dd77ce5fc23b446818823fielding }
f062ed7bd262a37a909dd77ce5fc23b446818823fielding}end
f062ed7bd262a37a909dd77ce5fc23b446818823fielding