#include
#include
#include
#include
#include void checkArgvs(int argc,char* argv[]);
void exiter(char* str);
void exiter(); int running = 1; int main(int argc,char* argv[]) {
cout << "\n";
checkArgvs(argc,argv);
int n1 = *argv[1] - 48,
n2 = *argv[2] - 48,
n3 = *argv[3] - 48,
n4 = *argv[4] - 48,
n5 = *argv[5] - 48;
int t1[n1];
int t2[n3];
int t3[n5];
for(int i = 1;i <= n1;i ) {
if((t1[i -1] = fork()) == -1) {
exiter("fork()失敗。\n");
} else if (t1[i -1] == 0) {
t1[i -1] = getpid();
printf("t1[%i] = %i\n",i-1,t1[i-1]);
if(i == n2) {
for(int j = 1;j <= n3;j ) {
if((t2[j -1] = fork()) == -1) {
exiter("fork()失敗。\n");
} else if (t2[j -1] == 0) {
t2[j -1] = getpid();
printf("t2[%i] = %i\n",j-1,t2[j-1]);
if(j == n4) {
for(int k = 1;k <= n5;k ) {
if((t3[k -1] = fork()) == -1) {
exiter("fork()失敗。\n");
}
else if (t3[k -1] == 0) {
t3[k -1] = getpid();
printf("t3[%i] = %i\n",k-1,t3[k-1]);
exit(1);
}
}
}
exit(1);
}
}
}
exit(1);
}
}
while(running);
exiter("forktest執行結束。\n");
return 0;
} void checkArgvs(int argc,char* argv[]) {
cout << "參數檢查開始...\n";
if(argc != 6) {
exiter("\tERROR:參數必須為五個大於零的個位數字。\n未通過參數檢查\n");
}
for(int i = 1;i <= 5;i ) {
if(*argv < 49 || *argv > 57)//49是用asc來看的..48表0而57則是9 {
exiter("\tERROR:參數必須為大於零的個位數字。\n未通過參數檢查\n");
}
}
if(*argv[2] > *argv[1]) {
exiter("\tERROR:第二個參數不得大於第一個參數。\n未通過參數檢查\n");
}
if(*argv[4] > *argv[3]) {
exiter("\tERROR:第四個參數不得大於第三個參數。\n未通過參數檢查\n");
}
cout << "通過參數檢查。\n";
} void exiter(char* str) {
cout << str << "\n";
exit(1);
} void exiter() {
exiter("");
}
請問一下要如何用signal函式讓他的三個輸出能夠分段輸出呢?..
麻煩大大們..教我要將其放在那..
謝謝 發表人 - dickyaaa 於 2005/11/14 22:24:37