test.c
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <pthread.h>
#include <sys/stat.h> // stat
#include <stdbool.h> // bool type
bool file_exists (char *filename) {
struct stat buffer;
return (stat (filename, &buffer) == 0);
}
typedef struct thread_data
{
int phase;
int result;
} thread_data;
void *run_sh(void * data)
{
thread_data *tdata=(thread_data *)data;
if(tdata->phase==1)
{
system("./test.sh ph1.log");
if (file_exists("./passed-ph1.log") == 0)
{
tdata->result = 10;
}
else
{
tdata->result = 5;
}
}
else
{
system("./test2.sh ph2.log");
if (file_exists("./passed-ph2.log") == 0)
{
tdata->result = 10;
}
else
{
tdata->result = 5;
}
}
pthread_exit(NULL);
}
int main (void)
{
printf("Main Start C\n");
pthread_t pthread[2];
thread_data tdata[2];
int status = 0;
tdata[0].phase = 1;
int thr_id = pthread_create(&pthread[0], NULL, run_sh,(void*)&tdata[0]);
if(thr_id < 0)
{
perror("pthread0 create error");
exit(EXIT_FAILURE);
}
tdata[1].phase = 2;
thr_id = pthread_create(&pthread[1], NULL, run_sh,(void*)&tdata[1]);
if(thr_id < 0)
{
perror("pthread1 create error");
exit(EXIT_FAILURE);
}
pthread_join(pthread[0], NULL);
pthread_join(pthread[1], NULL);
if(tdata[0].result == 10)
printf("Thread 0 passed\n");
else
printf("Thread 0 failed\n");
if(tdata[1].result == 10)
printf("Thread 1 passed\n");
else
printf("Thread 1 failed\n");
printf("Main end C\n");
return 0;
}
test.sh
log=$1
echo "$log"
echo "Hello World" > $log
sleep 1s
echo "Hello World" >> $log
sleep 1s
echo "Hello World" >> $log
sleep 1s
echo "Hello World" >> $log
sleep 1s
echo "Hello World" >> $log
sleep 1s
echo "Hello World" >> $log
sleep 1s
echo "Hello World" >> $log
sleep 1s
echo "Hello World" >> $log
sleep 1s
echo "Hello World" >> $log
sleep 1s
echo "The test.sh end"
newLog="passed-${log}"
mv $log $newLog
test2.sh
#!/bin/sh
log=$1
echo "$log"
echo "Nice too meet you" > $log
sleep 1s
echo "Nice too meet you" >> $log
sleep 1s
echo "Nice too meet you" >> $log
sleep 1s
echo "Nice too meet you" >> $log
sleep 1s
echo "Nice too meet you" >> $log
sleep 1s
echo "Nice too meet you" >> $log
sleep 1s
echo "Nice too meet you" >> $log
sleep 1s
echo "Nice too meet you" >> $log
sleep 1s
echo "Nice too meet you" >> $log
sleep 1s
echo "Nice too meet you" >> $log
sleep 1s
echo "Nice too meet you" >> $log
sleep 1s
echo "Nice too meet you" >> $log
sleep 1s
newLog="failed-${log}"
mv $log $newLog
참조 :
https://yeon-code.tistory.com/29
'Linux_system' 카테고리의 다른 글
C/C++ 에서 실행 시간을 측정하는 8가지 방법 (0) | 2022.12.09 |
---|---|
우분투 히든파일(숨김파일) 보이기/감추기 (0) | 2022.12.09 |
Multiplexed I/O - poll() (0) | 2022.09.18 |
Multiplexed I/O - select() (0) | 2022.09.18 |
QT (0) | 2022.09.07 |