簡體   English   中英

W8注冊表問題? 從C ++應用程序中調用Shell腳本,但未傳遞任何參數

[英]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 ++程序中執行腳本了,可以安全地傳遞參數。

我的注冊表設置是否可能以某種方式禁止數據傳遞?

.sh腳本的Windows注冊表

考慮調用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM