Linux基本C编程fork、signal、time以及用printf在终端打印一个GUI窗口 - 使用cygwin
1 fork, vfork示例
創(chuàng)建一個新進(jìn)程的方法只有由某個已存在的進(jìn)程調(diào)用fork()或vfork();
vfork創(chuàng)建新進(jìn)程的主要目的在于調(diào)用exec函數(shù)執(zhí)行另外的一個新程序,在沒調(diào)用exec或exit之前,子進(jìn)程的運(yùn)行是與父進(jìn)程共享數(shù)據(jù)段的;
? ? 代碼在此;
? ? ? ? https://blog.csdn.net/bcbobo21cn/article/details/51097573
就不重復(fù)了;
2 signal
信號
信號是linux系統(tǒng)為了響應(yīng)某些狀況而產(chǎn)生的事件。進(jìn)程收到信號后應(yīng)該采取相應(yīng)的動作
哪些情況會引發(fā)信號
1.鍵盤事件 ?ctrl +c ?ctrl +\?
2.非法內(nèi)存 ?如果內(nèi)存管理出錯,系統(tǒng)就會發(fā)送一個信號進(jìn)行處理?
3.硬件故障 ?同樣的,硬件出現(xiàn)故障系統(tǒng)也會產(chǎn)生一個信號?
4.環(huán)境切換 ?比如說從用戶態(tài)切換到其他態(tài),狀態(tài)的改變也會發(fā)送一個信號,這個信號會告知給系統(tǒng)
? ? ?signal.c程序在上面的鏈接;要打ctrl-c退出才會顯示 I get a signal!
3 時間編程
? ? 代碼在上面的鏈接;運(yùn)行如下;
? ? 必須包含?#include <time.h>?
4??用printf在終端打印一個GUI窗口
? ? 原代碼轉(zhuǎn)于?https://blog.csdn.net/Rong_Toa/article/details/80182043
我還沒來得及細(xì)看;
#include<stdio.h> #include<stdlib.h> /* \033[字符的顯示方式;字符的顏色;字符的背景顏色m 需要顯示的字符 \033[m */ /* 字符的顯示方式: 0(默認(rèn)值)、1(加粗)、2(灰顯)、3(斜體)、4(下劃線)、7(反顯)、9(刪除線) 字符的顏色: 30(黑色)、31(紅色)、32(綠色)、 33(黃色)、34(深藍(lán)色)、 35(紫色)、36(淺藍(lán)色)、37(白色) 字符的背景顏色: 40(黑色)、41(紅色)、42(綠色)、 43(黃色)、44(藍(lán)色)、 45(紫色)、46(淺藍(lán)色)、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++)
運(yùn)行結(jié)果如下;?
cygwin安裝使用見此;
https://blog.csdn.net/bcbobo21cn/article/details/45116929
總結(jié)
以上是生活随笔為你收集整理的Linux基本C编程fork、signal、time以及用printf在终端打印一个GUI窗口 - 使用cygwin的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java自定义类加载器
- 下一篇: 自己添加ODBC数据源的Access驱动