C語言能否控制某程式的執行時間呢

時間 2021-07-13 01:43:07

1樓:譚敘

嗯…… 不能精確控制,但可以粗略控制。

不知道題主了解作業系統有多少。所有程式執行都是由作業系統核心控制的,是在不同的程序中的。所以處於使用者態的一般程式也只能通過核心影響其它程序的執行。

於是就會出現程序被排程上CPU,和排程下CPU的情況。所以你不能夠控制你自己的程式在到時間的時候恰好在CPU上面執行。但是一般情況下不會太晚,所以還是可以粗略地控制。

另外,既然需要通過核心控制其他程序的執行,那就需要呼叫核心提供的系統呼叫。POSIX系統上面是kill(2),傳入pid和signal就可以給其它程式發訊號。其中SIGKILL、SIGSTOP、SIGHUP、SIGINT、SIGQUIT和SIGTERM都在一定意義下有「退出程式」的意思,需要根據具體情況選用最合適的訊號。

kill(2) - Linux manual page

Windows下面也有類似的WinAPI:

有很多時候需要控制子程式的執行時間,以防某個長時操作占用計算資源過久。比如某個SQL操作,如果join的順序有問題就會超時,就需要這麼乾掉這個程式。比如雲計算時某個任務的可用時間用盡,同樣需要用這種方法中止這個任務。

還有使用者乾掉沒有響應的程式,都是類似的手法。

最後需要說一句:並不是所有程式都有許可權這麼幹的。否則要是有個惡意程式亂殺一氣,那使用者就只能砸電腦了。

C語言有沒有簡單的方法,能讓函式中執行return之後,再次再執行另外一段命令?

典型的AOP操作。比較有共識的實現方式是函式巢狀來實現,就是外函式做你說的那些額外功能,內函式實現主要的計算邏輯。當然c的話還可以用巨集等奇技淫巧。但是你說簡單的話那估計不行 gcc 可以用 attribute cleanup fn int var 實現。這個類似於給 var 加了個析構函式 fn。...

有沒有會C語言的大佬幫忙做個程式的。

葉芝秋 這麼簡單的問題真不應該上知乎提問啊,自己不會可以學嘛,學不會可以使用搜尋引擎嘛。你這麼一問,有人答無人答還是一回事,等你看到了回答,可能這個問題早已被你拋諸腦後了。我覺得除非是那種能夠讓人長期思考或者分享出來比較有意義的問題,才應該上知乎提問。總之我覺得,自己遇到乙個問題,首先要自己去學習,...

有沒有用C語言實現不了的程式?

我是半吊子。不過,大學學彙編時候,老師說如果某個程式需要非常標準的時間的時候,不能用c語言,因為c的每條指令執行時間不是固定的。這個時候就要用到彙編 學渣,只接觸過這兩種語言,不知別的是否可以 因為組合語言中每條指令需要的時間是固定的。呃,記得是這樣,如果我記錯了一定要告訴我。 余天公升 圖靈完全是...