#include <iostream>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
using namespace std;
typedef struct A SA;
typedef union B UB;
struct A {
char a;
int b;
short c;
short d;
int f;
short e;
};
union B {
char a;
int b;
};
int main(){
cout << sizeof(SA) << endl; // 考的是对齐,VC可以设置不对齐:a->4,b+c->4,e->4,大小20。
UB b;
b.b = 1;
cout << (b.a==1) << endl; // 大端和小端字节序问题。
pid_t pid = fork();
if (pid != 0){
for(int i = 0; i < 2; i++) { // fork会复制缓冲区,加endl会把缓冲区清空,所以*和|输出的数目不一样。
cout << "*" << endl;
cout << "|";
fork();
}
}
else { // 逻辑或,运行第一个fork,fork出来的运行后面的fork,打印3个输出。
fork()||fork();
cout << getpid() << "'s parent is " << getppid() << endl;
}
}
输出:
20
1
7677's parent is 7676
*
7676's parent is 7675
|*
7675's parent is 7674
||*
|||