在Windows上,以system call 呼叫 shutdown。
目前就我知道的,stdlib.h 的system() 可以 System Call 一些 shell 的指令。
使用system() 會將程序暫停,呼叫作業系統,打開shell, 然後執行command。
執行完後,就繼續剛剛的程序。
我對於這個部份,很有興趣,請問有更深入的說明嗎?
而我在用
system("shutdown -s");
會發現程序卡在那裡,推斷應該是shell找不到,shutdown命令。
還是有其他的因素?
以上如有寫錯,請予以指正,感謝。
附上程式碼
#include <stdio.h>
#include <stdlib.h>
int main()
{
system("shutdown -s");
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.231.149.114
→
09/04 02:54, , 1F
09/04 02:54, 1F
推
09/04 03:06, , 2F
09/04 03:06, 2F
→
09/04 03:15, , 3F
09/04 03:15, 3F
推
09/04 03:19, , 4F
09/04 03:19, 4F
※ 編輯: sephiorth 來自: 61.228.36.238 (09/04 03:31)
→
09/04 03:37, , 5F
09/04 03:37, 5F
→
09/04 03:38, , 6F
09/04 03:38, 6F
※ 編輯: sephiorth 來自: 61.228.36.238 (09/04 03:40)
→
09/04 03:55, , 7F
09/04 03:55, 7F
→
09/04 04:03, , 8F
09/04 04:03, 8F
→
09/04 04:08, , 9F
09/04 04:08, 9F
推
09/04 08:14, , 10F
09/04 08:14, 10F
→
09/04 08:15, , 11F
09/04 08:15, 11F
→
09/04 08:16, , 12F
09/04 08:16, 12F
→
09/04 08:17, , 13F
09/04 08:17, 13F
→
09/04 08:17, , 14F
09/04 08:17, 14F
→
09/04 08:18, , 15F
09/04 08:18, 15F
→
09/04 08:20, , 16F
09/04 08:20, 16F
→
09/04 08:20, , 17F
09/04 08:20, 17F
推
09/04 13:01, , 18F
09/04 13:01, 18F
→
09/04 13:01, , 19F
09/04 13:01, 19F
推
09/04 13:12, , 20F
09/04 13:12, 20F
→
09/04 13:12, , 21F
09/04 13:12, 21F
推
09/04 20:22, , 22F
09/04 20:22, 22F
→
09/04 22:55, , 23F
09/04 22:55, 23F
→
09/04 22:56, , 24F
09/04 22:56, 24F
→
09/04 22:58, , 25F
09/04 22:58, 25F
→
09/04 22:59, , 26F
09/04 22:59, 26F
→
09/04 23:00, , 27F
09/04 23:00, 27F
從結果看 的確是shell 找不到 shutdown.exe 所以需要加上絕對路徑
不過windows 的 shell 不就是 cmd(命令提示字元
可小弟從命令提示字元去試 是找的到shutdown.exe 不需打絕對路徑
用system() 所開的 shell 的環境變數 沒有這樣shutdown.exe的路徑?
而小弟平常開從 執行 -> cmd 所開的 環境變數會包含shutdown.exe的路徑?
這真是有趣的東西
※ 編輯: sephiorth 來自: 61.231.147.188 (09/04 23:07)
※ 編輯: sephiorth 來自: 61.231.147.188 (09/04 23:08)
※ 編輯: sephiorth 來自: 61.231.147.188 (09/04 23:13)
推
09/04 23:36, , 28F
09/04 23:36, 28F
推
09/04 23:43, , 29F
09/04 23:43, 29F
推
09/04 23:51, , 30F
09/04 23:51, 30F
→
09/04 23:51, , 31F
09/04 23:51, 31F
推
09/04 23:55, , 32F
09/04 23:55, 32F
→
09/04 23:56, , 33F
09/04 23:56, 33F
推
09/04 23:58, , 34F
09/04 23:58, 34F
→
09/05 00:42, , 35F
09/05 00:42, 35F
→
09/05 00:44, , 36F
09/05 00:44, 36F
→
09/05 00:46, , 37F
09/05 00:46, 37F
→
09/05 00:47, , 38F
09/05 00:47, 38F
→
09/05 00:48, , 39F
09/05 00:48, 39F
有這個訊息
應用程式快顯: cmd.exe - 應用程式錯誤: 應用程式正常初始 (0xc0000142) 失敗。請按一下 [確定] 終止應用程式。
上微軟查找到可能的原因
因為系統管理員尚未指派使用者略過周遊檢查權限,可能就會發生這個問題。 <-- 好像幫助不大
小弟推斷 shell 其實有找到 shutdown.exe <-- 不然會出現 "shutdown.exe不是內部或外部命令" 的訊息
而shutdown.exe 可能被系統擋下來?
※ 編輯: sephiorth 來自: 61.231.147.188 (09/05 00:59)
→
09/05 01:18, , 40F
09/05 01:18, 40F
推
09/05 01:50, , 41F
09/05 01:50, 41F
→
09/05 01:50, , 42F
09/05 01:50, 42F
→
09/05 01:50, , 43F
09/05 01:50, 43F
推
09/05 02:46, , 44F
09/05 02:46, 44F
→
09/05 02:47, , 45F
09/05 02:47, 45F