【发布时间】:2017-09-17 10:07:47
【问题描述】:
我正在开发一个C++ 库,它有一段shell script 代码返回特定串行端口的名称。当我在控制台中运行此脚本时,无论是 X64 桌面还是 Arm 环境,脚本都会返回正确的答案。当我在库中执行相同的脚本时出现问题,返回显示格式错误的字符串,如 ÈÛT¶ÈÛT¶¨a ,但预期为 /dev/ttyACM0。
在库内运行的脚本:
脚本
bash -c 'for sysdevpath in $(find /sys/bus/usb/devices/usb*/ -name dev);do(syspath="${sysdevpath%/dev}";devname="$(udevadm info -q name -p $syspath)";[[ "$devname" == "bus/"* ]]&& continue;teste="$(udevadm info -q property --export -p $syspath | grep -i "company_name")";if [[ ! -z "${teste// }" && $devname == *"ttyACM"* ]]; then echo "/dev/$devname";fi);done;' 2> /dev/null
以下代码用于将脚本返回的内容保存到文件中。
代码 c++
pfFile = fopen(CONFIG_FILE, "w+");
fwrite(result,strlen(result), 1, pfFile);
fclose(pfFile);
return 0;
【问题讨论】: