创建一个新进程的方法只有由某个已存在的进程调用fork()或vfork(); vfork创建新进程的主要目的在于调用exec函数执行另外的一个新程序,在没调用exec或exit之前,子进程的运行是与父进程共享数据段的;
代码在此;
https://blog.csdn.net/bcbobo21cn/article/details/51097573
就不重复了;
信号 信号是linux系统为了响应某些状况而产生的事件。进程收到信号后应该采取相应的动作
哪些情况会引发信号 1.键盘事件 ctrl +c ctrl +\ 2.非法内存 如果内存管理出错,系统就会发送一个信号进行处理 3.硬件故障 同样的,硬件出现故障系统也会产生一个信号 4.环境切换 比如说从用户态切换到其他态,状态的改变也会发送一个信号,这个信号会告知给系统
signal.c程序在上面的链接;要打ctrl-c退出才会显示 I get a signal!
代码在上面的链接;运行如下;
必须包含 #include <time.h>
原代码转于 https://blog.csdn.net/Rong_Toa/article/details/80182043
我还没来得及细看;
#include<stdio.h> #include<stdlib.h> /* \033[字符的显示方式;字符的颜色;字符的背景颜色m 需要显示的字符 \033[m */ /* 字符的显示方式: 0(默认值)、1(加粗)、2(灰显)、3(斜体)、4(下划线)、7(反显)、9(删除线) 字符的颜色: 30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(深蓝色)、 35(紫色)、36(浅蓝色)、37(白色) 字符的背景颜色: 40(黑色)、41(红色)、42(绿色)、 43(黄色)、44(蓝色)、 45(紫色)、46(浅蓝色)、47(白色) */ int i; #define loop(n) for(i=0;i<n;i++) int main(int argc, char **argv) { int ix, iz, nx, nz, bndr=5; nx = 50; nz = 40; loop(bndr)printf(" "); loop(nx)printf("\033[;;43m \033[m"); loop(5)printf("\b"); printf("\033[;35;43m_ O X\033[m"); loop(nx/3*2)printf("\b"); printf("\033[;31;43m Main Window \033[m\n"); loop(bndr)printf(" "); loop(nx)printf("\033[;;46m \033[m"); printf("\n"); loop(bndr)printf(" "); loop(nx)printf("\033[;;46m \033[m"); loop(nx-3)printf("\b"); printf("\033[;30;46m ifo:This is a test. \033[m\n"); loop(bndr)printf(" "); loop(nx)printf("\033[;;46m \033[m"); loop(nx-3)printf("\b"); printf("\033[;30;46m This is second test. \033[m\n"); loop(bndr)printf(" "); loop(nx)printf("\033[;;46m \033[m"); loop(nx-3)printf("\b"); printf("\033[;30;46m This is third test. \033[m\n"); loop(bndr)printf(" "); loop(nx)printf("\033[;;46m \033[m"); loop(nx-3)printf("\b"); printf("\033[;30;46m Code BY RongTao. 2018.05 \033[m\n"); loop(bndr)printf(" "); loop(nx)printf("\033[;;46m \033[m"); printf("\n"); loop(bndr)printf(" "); loop(nx)printf("\033[;;46m \033[m"); loop(nx-3)printf("\b"); printf("\033[;30;46m Are you sure to continue? \033[m"); printf("\033[;;41m YES \033[m"); printf("\033[;;46m \033[m"); printf("\033[;;41m NO \033[m\n"); loop(bndr)printf(" "); loop(nx)printf("\033[;;46m \033[m"); printf("\n"); }代码如果是
#define loop(n) for(int i=0;i<n;i++)
则出错如下图;这是C99语法新特性,
改为如下即可;
int i; #define loop(n) for(i=0;i<n;i++)
运行结果如下;
cygwin安装使用见此;
https://blog.csdn.net/bcbobo21cn/article/details/45116929