那些年喜欢考的C/C++基础:fork,对齐和字节序

来源:互联网 发布:abaqus混凝土本构数据 编辑:程序博客网 时间:2024/06/05 18:39
#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;  }}


输出:

2017677's parent is 7676*7676's parent is 7675|*7675's parent is 7674||*|||