qnx掛死恢復指令碼簡易寫法

2021-09-10 06:40:19 字數 2092 閱讀 9805

接觸qnx兩天,拿到手上的板子bsp軟體已經被定製過,將啟動指令碼的位置和檔案系統做了大量更改

如下是幾個命令來處理退出和恢復過程

由於tinyrpc介面不提供退出介面,商務又不允許改介面,就採用低階的風險的退出方式exit(),遠端服務端使用了ip,port**等鬼東西,socket埠訪問總是無法訪問,於是用ping來查詢遠端機器是否啟動來代替查詢遠端tinyrpc伺服器是否執行,但exit退出方法會引起記憶體洩漏,從**端檢測到連線斷開退出程序的寫法

void t_resume()

// }

// // exit(1);

file * fp;

char buffer[20];

char cmp[20];

while(1) }

}

在啟動指令碼了做個檢測,發現遠端伺服器連線上之後再發起tinyrpc客戶端的連線,想用telnet來過濾,命令沒有,ssh命令沒有,好在加命令相對簡單,但加上去之後發現telnet和socket一樣無法訪問遠端埠,很多linux上穩定執行的工具都沒法使用,最後只能採用極端的方法了,在qnx啟動指令碼裡執行乙個後台shell指令碼來監控遠端伺服器,一旦起來就執行tinyrpc

#!/bin/sh

# import environment

basepath=$(cd `dirname $0`; pwd -p)

. $basepath/env_setup.sh

while true

do sleep 3

result=$(echo `ps -e -o pid,comm | grep "tinyrpc_service" | grep -v pid | grep -v grep`)

# echo $result

if [[ "$result" != "" ]]

then

# echo "tinyrpc runing"

sleep 1

else

result=$(echo $(echo `ping -c 1 10.255.255.100`) | grep "time=")

if [ "$" != "" ]

then

echo "tinyrpc resume"

tinyrpc_service &

fifidone

現有的指令得到兩列結果(602151 vcapture-test)

如果想得到單獨的pid號,可以在加awk指令過濾(602151)

echo `ps -e -o pid,comm | grep "vcapture-test" | grep -v pid | grep -v grep | awk ''`
其他:

在qnx檔案系統裡加命令方法,在src\hardware\startup\boards\dra72x\evm\build目錄下general commands段中加入需要的命令

telnet訪問埠指令碼如下,linux上很好用,但qnx用起來有點莫名其妙,感覺不是每次返回都是確定了

#!/bin/sh

num=`echo -n "\n"|telnet 127.0.0.1 32769|grep connected|wc -l`

if [ $num -eq 1 ]; then

echo "network is open."

else

echo "network is closed."

fi

socket埠在linux上預設開啟方式為非阻塞的,但在qnx的預設開啟方式為阻塞的,解決方法為設定非阻塞標誌位

int sockfd;

sockfd = socket(af_inet, sock_stream, 0);

flags = fcntl(sockfd, f_getfl, 0);

fcntl(sockfd, f_setfl, flags | o_nonblock);

除腳部老繭死皮妙方

取艾葉500克 7元 500克 紅花100克 7元 50克 平均分為20份,每日1份 加食醋100克,花椒20粒,食鹽2勺 用紗布包裹加水煮開 用水量為漫到腳踝處即可,趁熱泡腳,以15 30分鐘為限。本方既可以去除腳上的壞死老皮 老繭 凍瘡 裂口 灰指甲 腳癬以及多年不癒的雞眼等,還能使你的腳光滑細...

Oracle中編譯package掛死的原因

1.package在編譯的時候,用到了某些物件,而這個物件恰好被鎖住了,也就是說編譯執行緒發生了死鎖現象,程式掛死也就很正常了。2.package中寫了某些奇怪的語句,oracle的編譯器出問題了。第二種原因聽起來很不可思議,但是我之前確實遇到過。首先,轉乙個檢查oracle資料庫中物件死鎖及解決辦...

fprintf函式導致程序掛死問題分析

今天tuxedo的某個服務一呼叫就掛死,不報錯,沒coredump,經過打日誌定位,有問題的 是這一行 fprintf m fp,s s strtime.c str strfmt.c str m fp是file 後面兩個變數都是string,並且都能列印出來,沒有問題。dayong一口咬定就是fop...