test: delete garbage files
This commit is contained in:
152
test/840/C840.sh
152
test/840/C840.sh
@@ -1,152 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
if ! sudo ls /sys/kernel/debug | grep kmemleak > /dev/null 2>&1; then
|
|
||||||
echo kmemleak: not found >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 'C840T01... '
|
|
||||||
ng=0
|
|
||||||
sync
|
|
||||||
sudo /sbin/sysctl vm.drop_caches=3 > /dev/null 2>&1
|
|
||||||
./ihkosctl 0 clear_kmsg
|
|
||||||
sudo dmesg -c > /dev/null
|
|
||||||
sudo sh -c 'echo clear > /sys/kernel/debug/kmemleak'
|
|
||||||
./mcexec ./C840T01
|
|
||||||
if [ `sudo cat /sys/kernel/debug/kmemleak | wc -l` != 0 ]; then
|
|
||||||
echo 'C840T01: NG (kmemleak)'
|
|
||||||
ng=1
|
|
||||||
fi
|
|
||||||
if ! dmesg | grep 'remote_page_fault:interrupted. -512' > /dev/null 2>&1; then
|
|
||||||
echo 'C840T01: WARN (remote_page_fault)'
|
|
||||||
ng=1
|
|
||||||
fi
|
|
||||||
if ! ./ihkosctl 0 kmsg | grep 'is dead, terminate()' > /dev/null 2>&1; then
|
|
||||||
echo 'C840T01: WARN (syscall offloading)'
|
|
||||||
ng=1
|
|
||||||
fi
|
|
||||||
if [ $ng = 0 ]; then
|
|
||||||
echo C840T01: OK
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 'C840T02... '
|
|
||||||
ng=0
|
|
||||||
sync
|
|
||||||
sudo /sbin/sysctl vm.drop_caches=3 > /dev/null 2>&1
|
|
||||||
./ihkosctl 0 clear_kmsg
|
|
||||||
sudo dmesg -c > /dev/null
|
|
||||||
sudo sh -c 'echo clear > /sys/kernel/debug/kmemleak'
|
|
||||||
./mcexec ./C840T02
|
|
||||||
if [ `sudo cat /sys/kernel/debug/kmemleak | wc -l` != 0 ]; then
|
|
||||||
echo 'C840T02: NG (kmemleak)'
|
|
||||||
ng=1
|
|
||||||
fi
|
|
||||||
if dmesg | grep 'remote_page_fault:interrupted. -512' > /dev/null 2>&1; then
|
|
||||||
echo 'C840T02: WARN (remote_page_fault)'
|
|
||||||
ng=1
|
|
||||||
fi
|
|
||||||
if ! ./ihkosctl 0 kmsg | grep 'is dead, terminate()' > /dev/null 2>&1; then
|
|
||||||
echo 'C840T02: WARN (syscall offloading)'
|
|
||||||
ng=1
|
|
||||||
fi
|
|
||||||
if [ $ng = 0 ]; then
|
|
||||||
echo C840T02: OK
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 'C840T03... '
|
|
||||||
ng=0
|
|
||||||
sync
|
|
||||||
sudo /sbin/sysctl vm.drop_caches=3 > /dev/null 2>&1
|
|
||||||
./ihkosctl 0 clear_kmsg
|
|
||||||
sudo dmesg -c > /dev/null
|
|
||||||
sudo sh -c 'echo clear > /sys/kernel/debug/kmemleak'
|
|
||||||
./mcexec ./C840T03
|
|
||||||
if [ `sudo cat /sys/kernel/debug/kmemleak | wc -l` != 0 ]; then
|
|
||||||
echo 'C840T03: NG (kmemleak)'
|
|
||||||
ng=1
|
|
||||||
fi
|
|
||||||
if dmesg | grep 'remote_page_fault:interrupted. -512' > /dev/null 2>&1; then
|
|
||||||
echo 'C840T03: WARN (remote_page_fault)'
|
|
||||||
ng=1
|
|
||||||
fi
|
|
||||||
if ./ihkosctl 0 kmsg | grep 'is dead, terminate()' > /dev/null 2>&1; then
|
|
||||||
echo 'C840T03: WARN (syscall offloading)'
|
|
||||||
ng=1
|
|
||||||
fi
|
|
||||||
if [ $ng = 0 ]; then
|
|
||||||
echo C840T03: OK
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 'C840T04... '
|
|
||||||
ng=0
|
|
||||||
sync
|
|
||||||
sudo /sbin/sysctl vm.drop_caches=3 > /dev/null 2>&1
|
|
||||||
./ihkosctl 0 clear_kmsg
|
|
||||||
sudo dmesg -c > /dev/null
|
|
||||||
sudo sh -c 'echo clear > /sys/kernel/debug/kmemleak'
|
|
||||||
timeout -s 9 2 ./mcexec ./C840T04
|
|
||||||
sleep 2
|
|
||||||
if [ `sudo cat /sys/kernel/debug/kmemleak | wc -l` != 0 ]; then
|
|
||||||
echo 'C840T04: NG (kmemleak)'
|
|
||||||
ng=1
|
|
||||||
fi
|
|
||||||
if ! dmesg | grep 'remote_page_fault:interrupted. -512' > /dev/null 2>&1; then
|
|
||||||
echo 'C840T04: WARN (remote_page_fault)'
|
|
||||||
ng=1
|
|
||||||
fi
|
|
||||||
if ! ./ihkosctl 0 kmsg | grep 'is dead, terminate()' > /dev/null 2>&1; then
|
|
||||||
echo 'C840T04: WARN (syscall offloading)'
|
|
||||||
ng=1
|
|
||||||
fi
|
|
||||||
if [ $ng = 0 ]; then
|
|
||||||
echo C840T04: OK
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 'C840T05... '
|
|
||||||
ng=0
|
|
||||||
sync
|
|
||||||
sudo /sbin/sysctl vm.drop_caches=3 > /dev/null 2>&1
|
|
||||||
./ihkosctl 0 clear_kmsg
|
|
||||||
sudo dmesg -c > /dev/null
|
|
||||||
sudo sh -c 'echo clear > /sys/kernel/debug/kmemleak'
|
|
||||||
timeout -s 9 2 ./mcexec ./C840T05
|
|
||||||
sleep 2
|
|
||||||
if [ `sudo cat /sys/kernel/debug/kmemleak | wc -l` != 0 ]; then
|
|
||||||
echo 'C840T05: NG (kmemleak)'
|
|
||||||
ng=1
|
|
||||||
fi
|
|
||||||
if dmesg | grep 'remote_page_fault:interrupted. -512' > /dev/null 2>&1; then
|
|
||||||
echo 'C840T05: WARN (remote_page_fault)'
|
|
||||||
ng=1
|
|
||||||
fi
|
|
||||||
if ! ./ihkosctl 0 kmsg | grep 'is dead, terminate()' > /dev/null 2>&1; then
|
|
||||||
echo 'C840T05: WARN (syscall offloading)'
|
|
||||||
ng=1
|
|
||||||
fi
|
|
||||||
if [ $ng = 0 ]; then
|
|
||||||
echo C840T05: OK
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 'C840T06... '
|
|
||||||
ng=0
|
|
||||||
sync
|
|
||||||
sudo /sbin/sysctl vm.drop_caches=3 > /dev/null 2>&1
|
|
||||||
./ihkosctl 0 clear_kmsg
|
|
||||||
sudo dmesg -c > /dev/null
|
|
||||||
sudo sh -c 'echo clear > /sys/kernel/debug/kmemleak'
|
|
||||||
timeout -s 9 2 ./mcexec ./C840T06
|
|
||||||
sleep 2
|
|
||||||
if [ `sudo cat /sys/kernel/debug/kmemleak | wc -l` != 0 ]; then
|
|
||||||
echo 'C840T06: NG (kmemleak)'
|
|
||||||
ng=1
|
|
||||||
fi
|
|
||||||
if dmesg | grep 'remote_page_fault:interrupted. -512' > /dev/null 2>&1; then
|
|
||||||
echo 'C840T06: WARN (remote_page_fault)'
|
|
||||||
ng=1
|
|
||||||
fi
|
|
||||||
if ./ihkosctl 0 kmsg | grep 'is dead, terminate()' > /dev/null 2>&1; then
|
|
||||||
echo 'C840T06: WARN (syscall offloading)'
|
|
||||||
ng=1
|
|
||||||
fi
|
|
||||||
if [ $ng = 0 ]; then
|
|
||||||
echo C840T06: OK
|
|
||||||
fi
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
スクリプトは Wed Jun 6 14:38:21 2018
|
|
||||||
に開始しました[?1034hbash-4.2$ sh C840.sh
|
|
||||||
C840T01...
|
|
||||||
Terminate by signal 9
|
|
||||||
C840.sh: 14 行: 22464 強制終了 ./mcexec ./C840T01
|
|
||||||
C840T01: OK
|
|
||||||
C840T02...
|
|
||||||
Terminate by signal 9
|
|
||||||
C840.sh: 38 行: 22500 強制終了 ./mcexec ./C840T02
|
|
||||||
C840T02: OK
|
|
||||||
C840T03...
|
|
||||||
Terminate by signal 9
|
|
||||||
C840.sh: 62 行: 22535 強制終了 ./mcexec ./C840T03
|
|
||||||
C840T03: OK
|
|
||||||
C840T04...
|
|
||||||
C840.sh: 86 行: 22570 強制終了 timeout -s 9 2 ./mcexec ./C840T04
|
|
||||||
C840T04: OK
|
|
||||||
C840T05...
|
|
||||||
C840.sh: 111 行: 22598 強制終了 timeout -s 9 2 ./mcexec ./C840T05
|
|
||||||
C840T05: OK
|
|
||||||
C840T06...
|
|
||||||
C840.sh: 136 行: 22626 強制終了 timeout -s 9 2 ./mcexec ./C840T06
|
|
||||||
C840T06: OK
|
|
||||||
bash-4.2$ exit
|
|
||||||
exit
|
|
||||||
|
|
||||||
スクリプトは Wed Jun 6 14:38:51 2018
|
|
||||||
に終了しました
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <sys/mman.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <signal.h>
|
|
||||||
#include <errno.h>
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
int fd;
|
|
||||||
void *p;
|
|
||||||
long l;
|
|
||||||
pid_t pid;
|
|
||||||
|
|
||||||
pid = fork();
|
|
||||||
if (pid == 0) {
|
|
||||||
sleep(1);
|
|
||||||
kill(getppid(), SIGKILL);
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
fd = open("rpf.data", O_RDONLY);
|
|
||||||
if (fd == -1) {
|
|
||||||
perror("open(rpf.data)");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
p = mmap(NULL, 512*1024*1024, PROT_READ, MAP_PRIVATE, fd, 0);
|
|
||||||
if (p == (void *)-1) {
|
|
||||||
perror("mmap");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
close(fd);
|
|
||||||
fd = open("rpf.out", O_WRONLY|O_CREAT|O_TRUNC, 0600);
|
|
||||||
if (fd == -1) {
|
|
||||||
perror("open(fpt.out)");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
l = write(fd, p, 512*1024*1024);
|
|
||||||
printf("write=%ld\n", l);
|
|
||||||
close(fd);
|
|
||||||
munmap(p, 512*1024*1024);
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <sys/mman.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <signal.h>
|
|
||||||
#include <errno.h>
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
pid_t pid;
|
|
||||||
int pfd[2];
|
|
||||||
char c;
|
|
||||||
|
|
||||||
pid = fork();
|
|
||||||
if (pid == 0) {
|
|
||||||
sleep(1);
|
|
||||||
kill(getppid(), SIGKILL);
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
pipe(pfd);
|
|
||||||
read(pfd[0], &c, 1);
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <sys/mman.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <signal.h>
|
|
||||||
#include <errno.h>
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
pid_t pid;
|
|
||||||
|
|
||||||
pid = fork();
|
|
||||||
if (pid == 0) {
|
|
||||||
sleep(1);
|
|
||||||
kill(getppid(), SIGKILL);
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
for(;;);
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <sys/mman.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <signal.h>
|
|
||||||
#include <errno.h>
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
int fd;
|
|
||||||
void *p;
|
|
||||||
long l;
|
|
||||||
|
|
||||||
fd = open("rpf.data", O_RDONLY);
|
|
||||||
if (fd == -1) {
|
|
||||||
perror("open(rpf.data)");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
p = mmap(NULL, 512*1024*1024, PROT_READ, MAP_PRIVATE, fd, 0);
|
|
||||||
if (p == (void *)-1) {
|
|
||||||
perror("mmap");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
close(fd);
|
|
||||||
fd = open("rpf.out", O_WRONLY|O_CREAT|O_TRUNC, 0600);
|
|
||||||
if (fd == -1) {
|
|
||||||
perror("open(fpt.out)");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
l = write(fd, p, 512*1024*1024);
|
|
||||||
printf("write=%ld\n", l);
|
|
||||||
close(fd);
|
|
||||||
munmap(p, 512*1024*1024);
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <sys/mman.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <signal.h>
|
|
||||||
#include <errno.h>
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
int pfd[2];
|
|
||||||
char c;
|
|
||||||
|
|
||||||
pipe(pfd);
|
|
||||||
read(pfd[0], &c, 1);
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <sys/mman.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <signal.h>
|
|
||||||
#include <errno.h>
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
for(;;);
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
587
test/926/C926.c
587
test/926/C926.c
@@ -1,587 +0,0 @@
|
|||||||
#include <stdlib.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <sys/mman.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <sys/wait.h>
|
|
||||||
#include <sys/ipc.h>
|
|
||||||
#include <sys/shm.h>
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
pid_t pid1;
|
|
||||||
pid_t pid2;
|
|
||||||
pid_t pid3;
|
|
||||||
int st;
|
|
||||||
int p[2];
|
|
||||||
int shmid;
|
|
||||||
int *sp;
|
|
||||||
key_t key;
|
|
||||||
int valid1;
|
|
||||||
int valid2;
|
|
||||||
int valid3;
|
|
||||||
char c;
|
|
||||||
int result;
|
|
||||||
struct shmid_ds buf;
|
|
||||||
|
|
||||||
key = ftok(argv[0], 0);
|
|
||||||
|
|
||||||
printf("C926T01... ");
|
|
||||||
fflush(stdout);
|
|
||||||
valid1 = 1;
|
|
||||||
valid2 = 2;
|
|
||||||
valid3 = 2;
|
|
||||||
if (socketpair(AF_UNIX, SOCK_STREAM, 0, p) == -1) {
|
|
||||||
perror("socketpair");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((pid1 = fork()) == 0) {
|
|
||||||
close(p[0]);
|
|
||||||
shmid = shmget(key, 4096, IPC_CREAT | 0660);
|
|
||||||
// step 0
|
|
||||||
sp = shmat(shmid, NULL, 0);
|
|
||||||
*sp = 1;
|
|
||||||
// step 1
|
|
||||||
st = *sp == valid1? 1: 0;
|
|
||||||
shmdt(sp);
|
|
||||||
write(p[1], &c, 1);
|
|
||||||
exit(st);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((pid2 = fork()) == 0) {
|
|
||||||
close(p[1]);
|
|
||||||
shmid = shmget(key, 4096, IPC_CREAT | 0660);
|
|
||||||
// step 2
|
|
||||||
read(p[0], &c, 1);
|
|
||||||
sp = shmat(shmid, NULL, 0);
|
|
||||||
(*sp)++;
|
|
||||||
// step 3
|
|
||||||
st = *sp == valid2? 1: 0;
|
|
||||||
shmdt(sp);
|
|
||||||
// step 4
|
|
||||||
exit(st);
|
|
||||||
}
|
|
||||||
|
|
||||||
close(p[0]);
|
|
||||||
close(p[1]);
|
|
||||||
result = 0;
|
|
||||||
waitpid(pid1, &st, 0);
|
|
||||||
if (WIFEXITED(st))
|
|
||||||
result += WEXITSTATUS(st);
|
|
||||||
waitpid(pid2, &st, 0);
|
|
||||||
if (WIFEXITED(st))
|
|
||||||
result += WEXITSTATUS(st);
|
|
||||||
|
|
||||||
if ((pid3 = fork()) == 0) {
|
|
||||||
// step 5
|
|
||||||
shmid = shmget(key, 4096, IPC_CREAT | 0660);
|
|
||||||
sp = shmat(shmid, NULL, 0);
|
|
||||||
st = *sp == valid3? 1: 0;
|
|
||||||
shmdt(sp);
|
|
||||||
exit(st);
|
|
||||||
}
|
|
||||||
|
|
||||||
waitpid(pid3, &st, 0);
|
|
||||||
if (WIFEXITED(st))
|
|
||||||
result += WEXITSTATUS(st);
|
|
||||||
|
|
||||||
if (result == 3) {
|
|
||||||
printf("OK\n");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
printf("NG\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("C926T02... ");
|
|
||||||
fflush(stdout);
|
|
||||||
valid1 = 1;
|
|
||||||
valid2 = 2;
|
|
||||||
valid3 = 2;
|
|
||||||
if (socketpair(AF_UNIX, SOCK_STREAM, 0, p) == -1) {
|
|
||||||
perror("socketpair");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((pid1 = fork()) == 0) {
|
|
||||||
close(p[0]);
|
|
||||||
shmid = shmget(key, 4096, IPC_CREAT | 0660);
|
|
||||||
// step 0
|
|
||||||
sp = shmat(shmid, NULL, 0);
|
|
||||||
*sp = 1;
|
|
||||||
// step 1
|
|
||||||
st = *sp == valid1? 1: 0;
|
|
||||||
exit(st);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((pid2 = fork()) == 0) {
|
|
||||||
close(p[1]);
|
|
||||||
shmid = shmget(key, 4096, IPC_CREAT | 0660);
|
|
||||||
// step 2
|
|
||||||
read(p[0], &c, 1);
|
|
||||||
sp = shmat(shmid, NULL, 0);
|
|
||||||
(*sp)++;
|
|
||||||
// step 3
|
|
||||||
st = *sp == valid2? 1: 0;
|
|
||||||
shmdt(sp);
|
|
||||||
// step 4
|
|
||||||
exit(st);
|
|
||||||
}
|
|
||||||
|
|
||||||
close(p[0]);
|
|
||||||
close(p[1]);
|
|
||||||
result = 0;
|
|
||||||
waitpid(pid1, &st, 0);
|
|
||||||
if (WIFEXITED(st))
|
|
||||||
result += WEXITSTATUS(st);
|
|
||||||
waitpid(pid2, &st, 0);
|
|
||||||
if (WIFEXITED(st))
|
|
||||||
result += WEXITSTATUS(st);
|
|
||||||
|
|
||||||
if ((pid3 = fork()) == 0) {
|
|
||||||
// step 5
|
|
||||||
shmid = shmget(key, 4096, IPC_CREAT | 0660);
|
|
||||||
sp = shmat(shmid, NULL, 0);
|
|
||||||
st = *sp == valid3? 1: 0;
|
|
||||||
shmdt(sp);
|
|
||||||
exit(st);
|
|
||||||
}
|
|
||||||
|
|
||||||
waitpid(pid3, &st, 0);
|
|
||||||
if (WIFEXITED(st))
|
|
||||||
result += WEXITSTATUS(st);
|
|
||||||
|
|
||||||
if (result == 3) {
|
|
||||||
printf("OK\n");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
printf("NG\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("C926T03... ");
|
|
||||||
fflush(stdout);
|
|
||||||
valid1 = 1;
|
|
||||||
valid2 = 1;
|
|
||||||
valid3 = 1;
|
|
||||||
if (socketpair(AF_UNIX, SOCK_STREAM, 0, p) == -1) {
|
|
||||||
perror("socketpair");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((pid1 = fork()) == 0) {
|
|
||||||
close(p[0]);
|
|
||||||
shmid = shmget(key, 4096, IPC_CREAT | 0660);
|
|
||||||
// step 0
|
|
||||||
sp = shmat(shmid, NULL, 0);
|
|
||||||
*sp = 1;
|
|
||||||
// step 1
|
|
||||||
shmctl(shmid, IPC_RMID, &buf);
|
|
||||||
write(p[1], &c, 1);
|
|
||||||
|
|
||||||
// step3
|
|
||||||
read(p[1], &c, 1);
|
|
||||||
st = *sp == valid1? 1: 0;
|
|
||||||
shmdt(sp);
|
|
||||||
write(p[1], &c, 1);
|
|
||||||
exit(st);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((pid2 = fork()) == 0) {
|
|
||||||
close(p[1]);
|
|
||||||
shmid = shmget(key, 4096, IPC_CREAT | 0660);
|
|
||||||
// step 2
|
|
||||||
read(p[0], &c, 1);
|
|
||||||
sp = shmat(shmid, NULL, 0);
|
|
||||||
(*sp)++;
|
|
||||||
write(p[0], &c, 1);
|
|
||||||
// step 4
|
|
||||||
read(p[0], &c, 1);
|
|
||||||
st = *sp == valid2? 1: 0;
|
|
||||||
shmdt(sp);
|
|
||||||
exit(st);
|
|
||||||
}
|
|
||||||
|
|
||||||
close(p[0]);
|
|
||||||
close(p[1]);
|
|
||||||
result = 0;
|
|
||||||
waitpid(pid1, &st, 0);
|
|
||||||
if (WIFEXITED(st))
|
|
||||||
result += WEXITSTATUS(st);
|
|
||||||
waitpid(pid2, &st, 0);
|
|
||||||
if (WIFEXITED(st))
|
|
||||||
result += WEXITSTATUS(st);
|
|
||||||
|
|
||||||
if ((pid3 = fork()) == 0) {
|
|
||||||
// step 5
|
|
||||||
shmid = shmget(key, 4096, IPC_CREAT | 0660);
|
|
||||||
sp = shmat(shmid, NULL, 0);
|
|
||||||
st = *sp == valid3? 1: 0;
|
|
||||||
shmdt(sp);
|
|
||||||
exit(st);
|
|
||||||
}
|
|
||||||
|
|
||||||
waitpid(pid3, &st, 0);
|
|
||||||
if (WIFEXITED(st))
|
|
||||||
result += WEXITSTATUS(st);
|
|
||||||
|
|
||||||
if (result == 3) {
|
|
||||||
printf("OK\n");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
printf("NG\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("C926T04... ");
|
|
||||||
fflush(stdout);
|
|
||||||
valid1 = 1;
|
|
||||||
valid2 = 1;
|
|
||||||
valid3 = 1;
|
|
||||||
if (socketpair(AF_UNIX, SOCK_STREAM, 0, p) == -1) {
|
|
||||||
perror("socketpair");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((pid1 = fork()) == 0) {
|
|
||||||
close(p[0]);
|
|
||||||
shmid = shmget(key, 4096, IPC_CREAT | 0660);
|
|
||||||
// step 0
|
|
||||||
sp = shmat(shmid, NULL, 0);
|
|
||||||
*sp = 1;
|
|
||||||
// step 1
|
|
||||||
shmctl(shmid, IPC_RMID, &buf);
|
|
||||||
write(p[1], &c, 1);
|
|
||||||
|
|
||||||
// step4
|
|
||||||
read(p[1], &c, 1);
|
|
||||||
st = *sp == valid1? 1: 0;
|
|
||||||
shmdt(sp);
|
|
||||||
exit(st);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((pid2 = fork()) == 0) {
|
|
||||||
close(p[1]);
|
|
||||||
shmid = shmget(key, 4096, IPC_CREAT | 0660);
|
|
||||||
// step 2
|
|
||||||
read(p[0], &c, 1);
|
|
||||||
sp = shmat(shmid, NULL, 0);
|
|
||||||
(*sp)++;
|
|
||||||
// step 3
|
|
||||||
st = *sp == valid2? 1: 0;
|
|
||||||
shmdt(sp);
|
|
||||||
write(p[0], &c, 1);
|
|
||||||
exit(st);
|
|
||||||
}
|
|
||||||
|
|
||||||
close(p[0]);
|
|
||||||
close(p[1]);
|
|
||||||
result = 0;
|
|
||||||
waitpid(pid1, &st, 0);
|
|
||||||
if (WIFEXITED(st))
|
|
||||||
result += WEXITSTATUS(st);
|
|
||||||
waitpid(pid2, &st, 0);
|
|
||||||
if (WIFEXITED(st))
|
|
||||||
result += WEXITSTATUS(st);
|
|
||||||
|
|
||||||
if ((pid3 = fork()) == 0) {
|
|
||||||
// step 5
|
|
||||||
shmid = shmget(key, 4096, IPC_CREAT | 0660);
|
|
||||||
sp = shmat(shmid, NULL, 0);
|
|
||||||
st = *sp == valid3? 1: 0;
|
|
||||||
shmdt(sp);
|
|
||||||
exit(st);
|
|
||||||
}
|
|
||||||
|
|
||||||
waitpid(pid3, &st, 0);
|
|
||||||
if (WIFEXITED(st))
|
|
||||||
result += WEXITSTATUS(st);
|
|
||||||
|
|
||||||
if (result == 3) {
|
|
||||||
printf("OK\n");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
printf("NG\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("C926T05... ");
|
|
||||||
fflush(stdout);
|
|
||||||
valid1 = 1;
|
|
||||||
valid2 = 1;
|
|
||||||
valid3 = 1;
|
|
||||||
if (socketpair(AF_UNIX, SOCK_STREAM, 0, p) == -1) {
|
|
||||||
perror("socketpair");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((pid1 = fork()) == 0) {
|
|
||||||
close(p[0]);
|
|
||||||
shmid = shmget(key, 4096, IPC_CREAT | 0660);
|
|
||||||
// step 0
|
|
||||||
sp = shmat(shmid, NULL, 0);
|
|
||||||
*sp = 1;
|
|
||||||
// step 1
|
|
||||||
shmctl(shmid, IPC_RMID, &buf);
|
|
||||||
// step2
|
|
||||||
st = *sp == valid1? 1: 0;
|
|
||||||
shmdt(sp);
|
|
||||||
write(p[1], &c, 1);
|
|
||||||
exit(st);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((pid2 = fork()) == 0) {
|
|
||||||
close(p[1]);
|
|
||||||
shmid = shmget(key, 4096, IPC_CREAT | 0660);
|
|
||||||
// step 3
|
|
||||||
read(p[0], &c, 1);
|
|
||||||
sp = shmat(shmid, NULL, 0);
|
|
||||||
(*sp)++;
|
|
||||||
// step 4
|
|
||||||
st = *sp == valid2? 1: 0;
|
|
||||||
shmdt(sp);
|
|
||||||
exit(st);
|
|
||||||
}
|
|
||||||
|
|
||||||
close(p[0]);
|
|
||||||
close(p[1]);
|
|
||||||
result = 0;
|
|
||||||
waitpid(pid1, &st, 0);
|
|
||||||
if (WIFEXITED(st))
|
|
||||||
result += WEXITSTATUS(st);
|
|
||||||
waitpid(pid2, &st, 0);
|
|
||||||
if (WIFEXITED(st))
|
|
||||||
result += WEXITSTATUS(st);
|
|
||||||
|
|
||||||
if ((pid3 = fork()) == 0) {
|
|
||||||
// step 5
|
|
||||||
shmid = shmget(key, 4096, IPC_CREAT | 0660);
|
|
||||||
sp = shmat(shmid, NULL, 0);
|
|
||||||
st = *sp == valid3? 1: 0;
|
|
||||||
shmdt(sp);
|
|
||||||
exit(st);
|
|
||||||
}
|
|
||||||
|
|
||||||
waitpid(pid3, &st, 0);
|
|
||||||
if (WIFEXITED(st))
|
|
||||||
result += WEXITSTATUS(st);
|
|
||||||
|
|
||||||
if (result == 3) {
|
|
||||||
printf("OK\n");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
printf("NG\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("C926T06... ");
|
|
||||||
fflush(stdout);
|
|
||||||
valid1 = 1;
|
|
||||||
valid2 = 1;
|
|
||||||
valid3 = 1;
|
|
||||||
if (socketpair(AF_UNIX, SOCK_STREAM, 0, p) == -1) {
|
|
||||||
perror("socketpair");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((pid1 = fork()) == 0) {
|
|
||||||
close(p[0]);
|
|
||||||
shmid = shmget(key, 4096, IPC_CREAT | 0660);
|
|
||||||
// step 0
|
|
||||||
sp = shmat(shmid, NULL, 0);
|
|
||||||
*sp = 1;
|
|
||||||
// step 1
|
|
||||||
shmctl(shmid, IPC_RMID, &buf);
|
|
||||||
// step2
|
|
||||||
st = *sp == valid1? 1: 0;
|
|
||||||
exit(st);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((pid2 = fork()) == 0) {
|
|
||||||
close(p[1]);
|
|
||||||
shmid = shmget(key, 4096, IPC_CREAT | 0660);
|
|
||||||
// step 3
|
|
||||||
read(p[0], &c, 1);
|
|
||||||
sp = shmat(shmid, NULL, 0);
|
|
||||||
(*sp)++;
|
|
||||||
// step 4
|
|
||||||
st = *sp == valid2? 1: 0;
|
|
||||||
shmdt(sp);
|
|
||||||
exit(st);
|
|
||||||
}
|
|
||||||
|
|
||||||
close(p[0]);
|
|
||||||
close(p[1]);
|
|
||||||
result = 0;
|
|
||||||
waitpid(pid1, &st, 0);
|
|
||||||
if (WIFEXITED(st))
|
|
||||||
result += WEXITSTATUS(st);
|
|
||||||
waitpid(pid2, &st, 0);
|
|
||||||
if (WIFEXITED(st))
|
|
||||||
result += WEXITSTATUS(st);
|
|
||||||
|
|
||||||
if ((pid3 = fork()) == 0) {
|
|
||||||
// step 5
|
|
||||||
shmid = shmget(key, 4096, IPC_CREAT | 0660);
|
|
||||||
sp = shmat(shmid, NULL, 0);
|
|
||||||
st = *sp == valid3? 1: 0;
|
|
||||||
shmdt(sp);
|
|
||||||
exit(st);
|
|
||||||
}
|
|
||||||
|
|
||||||
waitpid(pid3, &st, 0);
|
|
||||||
if (WIFEXITED(st))
|
|
||||||
result += WEXITSTATUS(st);
|
|
||||||
|
|
||||||
if (result == 3) {
|
|
||||||
printf("OK\n");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
printf("NG\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("C926T07... ");
|
|
||||||
fflush(stdout);
|
|
||||||
valid1 = 2;
|
|
||||||
valid2 = 2;
|
|
||||||
valid3 = 0;
|
|
||||||
if (socketpair(AF_UNIX, SOCK_STREAM, 0, p) == -1) {
|
|
||||||
perror("socketpair");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((pid1 = fork()) == 0) {
|
|
||||||
close(p[0]);
|
|
||||||
shmid = shmget(key, 4096, IPC_CREAT | 0660);
|
|
||||||
// step 0
|
|
||||||
sp = shmat(shmid, NULL, 0);
|
|
||||||
*sp = 1;
|
|
||||||
write(p[1], &c, 1);
|
|
||||||
// step 2
|
|
||||||
read(p[1], &c, 1);
|
|
||||||
shmctl(shmid, IPC_RMID, &buf);
|
|
||||||
// step2
|
|
||||||
st = *sp == valid1? 1: 0;
|
|
||||||
exit(st);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((pid2 = fork()) == 0) {
|
|
||||||
close(p[1]);
|
|
||||||
shmid = shmget(key, 4096, IPC_CREAT | 0660);
|
|
||||||
// step 1
|
|
||||||
read(p[0], &c, 1);
|
|
||||||
sp = shmat(shmid, NULL, 0);
|
|
||||||
(*sp)++;
|
|
||||||
write(p[0], &c, 1);
|
|
||||||
// step 3
|
|
||||||
read(p[0], &c, 1);
|
|
||||||
st = *sp == valid2? 1: 0;
|
|
||||||
shmdt(sp);
|
|
||||||
// step 4
|
|
||||||
exit(st);
|
|
||||||
}
|
|
||||||
|
|
||||||
close(p[0]);
|
|
||||||
close(p[1]);
|
|
||||||
result = 0;
|
|
||||||
waitpid(pid1, &st, 0);
|
|
||||||
if (WIFEXITED(st))
|
|
||||||
result += WEXITSTATUS(st);
|
|
||||||
waitpid(pid2, &st, 0);
|
|
||||||
if (WIFEXITED(st))
|
|
||||||
result += WEXITSTATUS(st);
|
|
||||||
|
|
||||||
if ((pid3 = fork()) == 0) {
|
|
||||||
// step 5
|
|
||||||
shmid = shmget(key, 4096, IPC_CREAT | 0660);
|
|
||||||
sp = shmat(shmid, NULL, 0);
|
|
||||||
st = *sp == valid3? 1: 0;
|
|
||||||
shmdt(sp);
|
|
||||||
exit(st);
|
|
||||||
}
|
|
||||||
|
|
||||||
waitpid(pid3, &st, 0);
|
|
||||||
if (WIFEXITED(st))
|
|
||||||
result += WEXITSTATUS(st);
|
|
||||||
|
|
||||||
if (result == 3) {
|
|
||||||
printf("OK\n");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
printf("NG\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("C926T08... ");
|
|
||||||
fflush(stdout);
|
|
||||||
valid1 = 2;
|
|
||||||
valid2 = 2;
|
|
||||||
valid3 = 2;
|
|
||||||
if (socketpair(AF_UNIX, SOCK_STREAM, 0, p) == -1) {
|
|
||||||
perror("socketpair");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((pid1 = fork()) == 0) {
|
|
||||||
close(p[0]);
|
|
||||||
shmid = shmget(key, 4096, IPC_CREAT | 0660);
|
|
||||||
// step 0
|
|
||||||
sp = shmat(shmid, NULL, 0);
|
|
||||||
*sp = 1;
|
|
||||||
write(p[1], &c, 1);
|
|
||||||
// step 2
|
|
||||||
read(p[1], &c, 1);
|
|
||||||
// step2
|
|
||||||
st = *sp == valid1? 1: 0;
|
|
||||||
exit(st);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((pid2 = fork()) == 0) {
|
|
||||||
close(p[1]);
|
|
||||||
shmid = shmget(key, 4096, IPC_CREAT | 0660);
|
|
||||||
// step 1
|
|
||||||
read(p[0], &c, 1);
|
|
||||||
sp = shmat(shmid, NULL, 0);
|
|
||||||
(*sp)++;
|
|
||||||
write(p[0], &c, 1);
|
|
||||||
// step 3
|
|
||||||
read(p[0], &c, 1);
|
|
||||||
st = *sp == valid2? 1: 0;
|
|
||||||
shmdt(sp);
|
|
||||||
// step 4
|
|
||||||
exit(st);
|
|
||||||
}
|
|
||||||
|
|
||||||
close(p[0]);
|
|
||||||
close(p[1]);
|
|
||||||
result = 0;
|
|
||||||
waitpid(pid1, &st, 0);
|
|
||||||
if (WIFEXITED(st))
|
|
||||||
result += WEXITSTATUS(st);
|
|
||||||
waitpid(pid2, &st, 0);
|
|
||||||
if (WIFEXITED(st))
|
|
||||||
result += WEXITSTATUS(st);
|
|
||||||
|
|
||||||
if ((pid3 = fork()) == 0) {
|
|
||||||
// step 5
|
|
||||||
shmid = shmget(key, 4096, IPC_CREAT | 0660);
|
|
||||||
sp = shmat(shmid, NULL, 0);
|
|
||||||
st = *sp == valid3? 1: 0;
|
|
||||||
shmdt(sp);
|
|
||||||
exit(st);
|
|
||||||
}
|
|
||||||
|
|
||||||
waitpid(pid3, &st, 0);
|
|
||||||
if (WIFEXITED(st))
|
|
||||||
result += WEXITSTATUS(st);
|
|
||||||
|
|
||||||
if (result == 3) {
|
|
||||||
printf("OK\n");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
printf("NG\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
スクリプトは Wed Jun 6 14:39:24 2018
|
|
||||||
に開始しました[?1034hbash-4.2$ ./mcexec C[K./C926
|
|
||||||
C926T01... OK
|
|
||||||
C926T02... OK
|
|
||||||
C926T03... OK
|
|
||||||
C926T04... OK
|
|
||||||
C926T05... OK
|
|
||||||
C926T06... OK
|
|
||||||
C926T07... OK
|
|
||||||
C926T08... OK
|
|
||||||
bash-4.2$ exit
|
|
||||||
exit
|
|
||||||
|
|
||||||
スクリプトは Wed Jun 6 14:39:38 2018
|
|
||||||
に終了しました
|
|
||||||
Reference in New Issue
Block a user