2015-04-08 2 views
0

Я пытаюсь получить cksum одного файла, используя Go, выполнив команду cksum.

Получение ниже сообщение об ошибке:

exec: "cksum": executable file not found in $PATH 

Ниже приведен код:

cmd := exec.Command("/bin/cksum",dst) 

Спасибо.

+3

Вы уверены, что 'cksum' фактически установлен под'/bin'? – Mureinik

ответ

1
cmd := exec.Command("/usr/bin/cksum",dst) 
2

Из документации для exec.Command:

If name contains no path separators, Command uses LookPath to resolve the path to a complete name if possible. Otherwise it uses name directly.

Так что немного лучше использовать cmd := exec.Command("cksum", …) и пусть это будет там, где когда-либо она существует на пути. В качестве альтернативы вы должны запустить which cksum, который на почти каждой системе unix даст: /usr/bin/cksum.

Но еще лучше сделайте свой код переносимым на любым OS, который может работать Go и использовать hash/crc32. Или еще лучше, если вы можете удалить какие-либо требования о необходимости использовать CRC32 (который является то, что древний cksum использует), выбрать один из других намного превосходит хэшей из hash/…, crypto/… (например sha256), или golang.org/x/crypto/… (например, sha3).

Смежные вопросы