2023年1月29日星期日

[C Language] linux signal 範例程式

 下面介紹一個範例程式名為 "signal",編譯此程式之後,把此程式run在背景,可以使用下面幾個指令,來觸發此程式當中的 printf來印出相對應的訊息,當然你也可以把 printf 改成你想做的事情

 kill -SIGHUP `pidof signal`
 kill -SIGINT `pidof signal`
 kill -SIGQUIT `pidof signal`


======================= signal.c =================

#include <signal.h>
#include <unistd.h>
#include <stdio.h>

void sigroutine(int sig_num) {
    switch(sig_num) {
        case 1:
                printf("Get a signal - SIGHUP \n");
        case 3:
                
printf("Get a signal - SIGQUIT \n");
        case 10:
                printf("Get a signal - SIGUSR1 \n");
    }
    return;
}

int main() {
    printf("process id is %d\n", getpid());
    signal(SIGHUP, 
sigroutine);
    signal(SIGQUIT, sigroutine);
    signal(SIGUSR1, sigroutine);
    for (;;) ;
}

==============================================


另外列出,所有可以帶入 kill 後面的sigmal列表(Reference from google)
2 - 就是我們常見的鍵盤中斷 CTRL+c
9 - 就是我們常用來kill process的 signal



信號取值默認動作含義(發出信號的原因)
SIGHUP1Term終端的掛斷或進程死亡
SIGINT2Term來自鍵盤的中斷信號
SIGQUIT3Core來自鍵盤的離開信號
SIGILL4Core非法指令
SIGABRT6Core來自abort的異常信號
SIGFPE8Core浮點例外
SIGKILL9Term殺死
SIGSEGV11Core段非法錯誤(內存引用無效)
SIGPIPE13Term管道損壞:向一個沒有讀進程的管道寫數據
SIGALRM14Term來自alarm的計時器到時信號
SIGTERM15Term終止
SIGUSR110Term用戶自定義信號1
SIGUSR212Term用戶自定義信號2
SIGCHLD20,17,18Ign子進程停止或終止
SIGCONT19,18,25Cont如果停止,繼續執行
SIGSTOP17,19,23Stop非來自終端的停止信號
SIGTSTP18,20,24Stop來自終端的停止信號
SIGTTIN21,21,26Stop後台進程讀終端
SIGTTOU22,22,27Stop後台進程寫終端
SIGBUS10,7,10Core總線錯誤(內存訪問錯誤)
SIGPOLLTermPollable事件發生(Sys V),與SIGIO同義
SIGPROF27,27,29Term統計分佈圖用計時器到時
SIGSYS12,-,12Core非法系統調用(SVr4)
SIGTRAP5Core跟踪/斷點自陷
SIGURG16,23,21Ignsocket緊急信號(4.2BSD)
SIGVTALRM26,26,28Term虛擬計時器到時(4.2BSD)
SIGXCPU24,24,30Core超過CPU時限(4.2BSD)
SIGXFSZ25,25,31Core超過文件長度限制(4.2BSD)
SIGIOT6CoreIOT自陷,與SIGABRT同義
SIGEMT7,-,7Term
SIGSTKFLT-,16,-Term協處理器堆棧錯誤(不使用)
SIGIO23,29,22Term描述符上可以進行I/O操作
SIGCLD-,-,18Ign與SIGCHLD同義
SIGPWR29,30,19Term電力故障(System V)
SIGINFO29,-,-與SIGPWR同義
SIGLOST-,-,-Term文件鎖丟失
SIGWINCH28,28,20Ign窗口大小改變(4.3BSD, Sun)
SIGUNUSED-,31,-Term未使用信號(will be SIGSYS)


另外在Linux底下,輸入 kill -l 也可以看到這些SIGXXX 所定義的編號,如下:

$ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX



2022年12月12日星期一

[shell script] 排除特定檔案,複製其餘的檔案or資料夾,到另一個路徑的方法

 ===== 狀況描述 ======

目錄底下,分別有AAA資料夾與 BBB 資料夾

AAA目錄底下分別有以下的資料夾與路徑



 


現在我們寫一個script,可以讓AAA底下的 111, 333, 666 不要複製到 BBB 資料夾

============ cp_exclude.sh ================

#!/bin/sh
rsync -r --exclude '111' --exclude '333' --exclude '666' AAA/ BBB/

========================================

很簡單的一行指令,就可以完成
下面我們看一下 BBB/ 資料夾底下,複製了哪些東西




*註: 雖然排除了要複製的東西,剩餘都複製過去了,但是發現,原本555資料夾底下的的檔案,卻無法一起複製到 BBB/ ,如果以後有解決方法,再上來更新...

2022年11月17日星期四

Google AdSense審核失敗,必須修正問題,網站才能開始使用 AdSense,解決方法

 Google blog 想要申請廣告,卻遇到審核失敗,請先檢查是不是沒有做下面這件事情,將您的網站連結AdSense。 

要如何做才能夠連結AdSense? 請依照以下步驟

Step1: 請先到您的 AdSense頁面,作以下步驟

1) 點選左邊 "廣告"

2) 點選 "取得程式碼"











Step2: 接著會看到切換到這個頁面,作以下步驟

1) 點選 "複製程式碼片段"

2) 點選 "完成"


















Step3: 接著請切換到您的 Blog 管理頁面,作以下步驟

1) 點選左邊 "主題"

2) 點選自訂右邊的 "箭頭"

3) 點選 "編輯HTML"













Step4: 接著會看到切換到程式碼的頁面如下,不用擔心看不懂,只需作以下步驟

1) 在 <head>下方,貼上剛剛複製的程式碼

2) 點選右邊的 "儲存" 圖案










Step5: 最後再回到 AdSense的頁面,再次請Google審核


就以上的步驟,希望這篇文章對於要加入廣告行列的各位有幫助!!!

2022年9月24日星期六

辦理護照需要注意的事項,包含大頭照的格式

 

必備文件

  1. 委任書 (D式;本人【未成年人由其法定代理人】委任旅行社代為申請護照時填用)**如附檔**
  2. 電子檔照片請先mail + 1張彩色實體照片規格需符合規定(6個月內白底彩色近照、頭頂至下巴長度介於 3.2-3.6 公分需露耳朵、眉毛,不可露齒、不可配戴粗框眼鏡、不可以有反光)
  3. ※電子檔照片規格重點-限定JPG或JPEG格式,色彩模式為RGB(需至少24位元),檔案大小不得大於5MB,解析高度至少需達531像素,寬度至少需達413像素。
  4. 身分證正本(14歲以下, 改以戶口名簿正本 或3個月內戶謄正本 ,18歲以下需監護人身份證正本)
  5. (換發申請)舊護照未過期須繳回
  6. (遺失件申請)警察機關核發之「護照遺失申報表」正本
  7. 首次申請需先至 戶政事務所作「人別確認」
  8. 工作天:普通件5天+2天郵寄 費用NT:1300-

使用手機DIY,製作證件護照用的大頭照方法與步驟,並且洗出照片,

首先安裝兩個APP,我是使用Iphone手機
1. APP名稱: 照片去背












2. APP名稱: 證件照應用












首先先說明[照片去背]APP用法,可以幫你把你自拍的照片背景,替換成全白

Step1: 打開APP之後,選擇"證件照"
Step2: 選擇"換底色"
Step3: 選擇已經使用手機自拍好的大頭照,按下此照片
Step4: 會要求你選擇背景色,請選擇"白色",就會看到妳的照片背景,已經被換成白色
Step5: 這邊我們無法選擇"保存",因為直接"保存"需要付費,為了免費,我們使用手機截圖的方式
Step6: 截圖之後,圖的下方會有一行文字"支付後不顯示此文字",請用照片修圖的方式,把此存文字截掉
最後就完成第一階段,得到了一張去背證件大頭照


使用[證件照應用]APP,可以幫你的上一步產生的大頭照,改成符合政府的格式,另外可以幫你組成一張4x6照片有8個大頭照

Step1: 打開APP之後,選擇"從圖庫中選擇",並選擇去背好的照片
Step2: 點進去後,會詢問你"使用此照片?",請選擇"是"
Step3: 接著選擇"台灣身分證,護照"的規格選項
Step4: 按下"應用此尺寸"的選項
Step5: 在"指南"的欄位,看到"1","2","3"選項,選擇"2"之後,再去調整需要的大小,請參考政府規定的證件照格式 (參考https://gigidandan.blogspot.com/2022/09/blog-post.html)
Step6: 確定調整好之後,按下"完成調整",會跳出一些提示文字,關閉就可以了
Step7: 接下會出現"以實際尺寸顯示,這樣行嗎?",直接按"是"
Step8: 接下來會看到調整好的大頭照,會顯示"請指定張數",請設定成8張,
Step9: 最下方要勾選"僅限照片",在此範圍的右上角,有個小框框,點此小框框可以調整洗出來的格式,最後再按下最上面的"下一步"選項
Step10: 會顯示最後要洗的照片,按下右上角的"儲存"選項,存到手機當中


洗照片

到全省有設置"立可得"的便利商店,按照機台所指示的步驟,把照片洗出,即完成

據點查詢: http://www.likoda.com.tw/info/store/

使用 lsblk 印出 emmc 每個 partition的"名字"與"size"

使用以下的command可以印出 eMMC的 partition資訊 lsblk --bytes --output name,partlabel,size   參數說明 --bytes: partition的大小,以byte的方式輸出 --output: 後面可以指定要輸出的內容...