[英]W8 Registry issue? Calling shell script from within C++ app but no arguments get passed
我有一個C ++程序,它使用system()
調用來執行並將參數發送到Shell腳本。 在我的Windows 8.1計算機上,它工作正常。 現在,我正在嘗試在新的Windows 8.1筆記本電腦上運行相同的東西。 Shell腳本被執行,但是沒有收到參數。
C ++代碼
system(("C:/script.sh file.png &").c_str());
在shell腳本中,我驗證收到的參數數量。
#!/bin/bash
echo "received arguments: $# "
我可以從Git Bash手動執行並將參數傳遞給腳本
$ sh script.sh file.png
received arguments: 1
但是,如果我使用c ++中的system()
調用來執行此操作,則接收到的參數始終為0。相同的精確代碼在另一台計算機上也可以很好地工作。 該問題似乎與Windows注冊表有關。 我第一次在新筆記本電腦上運行C ++程序時,Windows問我應該使用什么程序來執行Shell腳本。 我選擇了PowerShell。 但這只是導致PowerShell瘋狂地打開/關閉,我不得不重新啟動計算機。 然后,我去瀏覽器,將.sh與Git Bash關聯。 現在,可以從C ++程序中執行腳本了,可以安全地傳遞參數。
我的注冊表設置是否可能以某種方式禁止數據傳遞?
考慮調用system("/path/to/bash C:/script.sh file.png &")
來system("/path/to/bash C:/script.sh file.png &")
OS的工作,否則需要啟動shebang中建議的程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.