[问题] 用system()送cmd command

楼主: williamsm (Roger)   2016-11-30 19:31:41
开发平台(Platform): (Ex: Win10, Linux, ...)
win7
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
VS2013
问题(Question):
目前使用system(str_cmd)去下PSCP指令,在确定指令正确后准备送出
出现 L"buffer is too small" && 0 的错误讯息
预送出的str_cmd指令如下:
const char* str_cmd = pscp -sftp -l A -pw B -P 22
"C:\Users\Documents\Visual Studio 2013\Projects\xxx\xxxxxx\xxxx\ffff.txt"
sftp.Kkkk.com:
有先确认从cstring转const char*与直接用cmd下是OK的,但送到system后就发生错误
我认为应该是system给带的参数限制之类的,想请问这段要怎么去避免呢?谢谢
作者: EdisonX (卡卡兽)   2016-11-30 20:54:00
这段应该是你先去试 pscp 怎么用,确定能用后再放上来
楼主: williamsm (Roger)   2016-11-30 22:35:00
您好,我这边已经确定pack 同样指令可以上传与下载,但丢到程式里的system这段就会有问题,我很确定问题发生在system,想说是否system带的参数有长度限制?打错,pscp 不是pack
作者: Schottky (顺风相送)   2016-11-30 23:51:00
这字串常数怎么看都是错的啊前后要加引号
作者: EdisonX (卡卡兽)   2016-12-01 02:29:00
system 回报的错误是什么 ? (猜可能是路径问题 ?)
楼主: williamsm (Roger)   2016-12-01 09:24:00
在单步执行system(".....")后出现->"buffer is too small" && 0 错误讯息,检视看是在tcscpy_s.inl错的
作者: Schottky (顺风相送)   2016-12-01 09:31:00
单步执行时检查一下送进去的字串正确吗?
楼主: williamsm (Roger)   2016-12-01 09:37:00
S大您好,抱歉上述的pscp 指令是给cmd的,给system 要首尾跟档案位置要加减"",我用同一样的command内容是一样的,在cmd可执行
作者: Schottky (顺风相送)   2016-12-01 09:53:00
我心中隐隐觉得问题就出在这里字串常数没处理好,想送进去的字串和实际送进去的不一样
作者: EdisonX (卡卡兽)   2016-12-01 17:29:00
tcscpy_s.. 怎像是没加结束字符爆掉的感觉,你有用这函式吗?你的 cstringtoconstchar 里最后的回传是 ??
楼主: williamsm (Roger)   2016-12-02 08:54:00
E大您好,return char result_temp1[200],这是回传值后来用用一种方式cstring 转const char*就成功,似乎用上面的转法会有问题
作者: EdisonX (卡卡兽)   2016-12-02 19:28:00
恕我没想帮你试 wcstombs_s, 我只纳闷为何不用 _wsystem或 _tsystem , 非得要用 system ??
楼主: williamsm (Roger)   2016-12-02 21:58:00
哈,e大说的正是我后来使用的方式,但我还是不知道为什么要_tsystem才有用,用system则会失败
作者: EdisonX (卡卡兽)   2016-12-03 03:48:00
很明显mbcs系列函式用错啊

Links booklink

Contact Us: admin [ a t ] ucptt.com